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 = address,fornavn =名字 我需要显示人员的地址,名字和邮政编号,其中不止一个人居住在同一地址。我知道它与加入相同的表有关,但我似乎无法弄清楚加入哪些表是有意义的。
答案 0 :(得分: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