0
select
  person.adresse,
  person.fornavn,
  person.postnr,
  COUNT(PERSON.personnr)
from 
  PERSON 
    inner join 
  POST
    on POST.postnr = PERSON.postnr
    inner join
  PERSON as P 
    on PERSON.adresse = P.adresse
group by 
  PERSON.adresse, 
  PERSON.fornavn,
  PERSON.postnr
having 
  COUNT(PERSON.personnr) > 1

Adresse = 地址,fornavn = 名字 我需要显示人员的地址、名字和邮政编码,如果不止一个人住在同一个地址上。我知道这与加入相同的表有关,但我似乎无法弄清楚加入哪些表是有意义的。

4

1 回答 1

0

直接解决您的查询是添加and PERSON.fornavn <> P.fornavn用于确保您加入到同一地址的不同人的条件。然后您可以删除 COUNT,尤其是因为它会产生错误的结果。

select person.adresse, person.fornavn, person.postnr
from PERSON
join PERSON as P on PERSON.adresse = P.adresse and PERSON.fornavn <> P.fornavn
group by PERSON.adresse, PERSON.fornavn, PERSON.postnr
order by PERSON.adresse

虽然这可行,但首先找到拥有多个人的地址,然后检索这些地址的人可能更有效。

SELECT P.adresse, P.fornavn, P.postnr
  FROM (
       SELECT adresse
         FROM PERSON
     GROUP BY adresse
       HAVING COUNT(*) > 1) G
  JOIN PERSON P ON P.adresse = G.adresse
于 2012-11-01T11:55:48.633 回答