2015-06-20 86 views
0

我有4列id,firstname,last name,reference。大多數情況下,引用是相同的,但我需要顯示具有相同名稱的每行,但postgresql中的不同引用並按ID號排序。僅適用於某人擁有多個參考的行。我嘗試了一堆東西,但只是弄得一團糟。請協助。 例如: -Postgresql:兩列相同但第三列不同,顯示行

20/John/Smith/675 
21/John/Smith/675 
22/John/Smith/676 
22/Joe/Bloggs/ 651 
24/Joe/Bloggs/ 651 
25/John/Smith/674 

應該返回所有的約翰·史密斯行,因爲一個或更多的是他引用的是不一樣的

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 

回答

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 
); 
+0

兩個答案的工作,這是我所需要的更好的一個,我認爲 – Kilisi

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) 
+0

當我嘗試它不返回任何東西在phppgadmin – Kilisi

+0

@Kilisi,當我嘗試查詢時,它會返回John Smith的所有行。請張貼表格定義。這是我的表:'創建表傳輸(ID整數,名字文本,姓氏文本,引用整數);'和我插入你的例子的6行。 – Renzo

+0

我的是一樣的,除了引用是char變化的,不知道怎麼會影響它。似乎只是在phppgadmin崩潰...當我明天到我的辦公室時,我會再試一次 – Kilisi