我有4列id,名字,姓氏,引用。大多数时候引用是相同的但我需要显示每个具有相同名称的行,但在postgresql中显示不同的引用并按ID号对它们进行排序。仅适用于某人有多个引用的行。我尝试了很多东西但是弄得一团糟。请协助。 例如: -
20 / John / Smith / 675
21 / John / Smith / 675
22 / John / Smith / 676
22 / Joe / Bloggs/ 651
24 / Joe / Bloggs/ 651
25 / John / Smith / 674
应该返回所有John Smith行,因为他的一个或多个引用是不相似的
20 / John / Smith / 675
21 / John / Smith / 675
22 / John / Smith / 676
25 / John / Smith / 674
我可以使用它来计算,但我想显示完整的行
select firstname, lastname, count (distinct id)
from transfer
group by firstname, lastname
having count(distinct id) >= 2
答案 0 :(得分:1)
这是一个可能的答案:
select id, firstname, lastname, reference
from transfer t1
where 1 < (select count(distinct reference)
from transfer t2
where t1.firstname = t2.firstname and t1.lastname = t2.lastname)
答案 1 :(得分:1)
您无需计算,您只需要检查(至少)是否存在同一个人reference
的不同值的一条记录:
SELECT *
FROM transfer t
WHERE EXISTS (
SELECT * FROM transfer x
WHERE x.firstname = t.firstname -- same name
AND x.lastname = t.lastname
AND x. reference <> t.reference -- different reference
);