2013-05-29 146 views
0

嗨對不起什麼似乎提前這麼簡單的問題...SQL查詢來選擇重複登記

我有一些實驗室的數百萬行的數據和以下字段(其中包括)

  • 實驗室參考編號
  • 用的名字
  • DOB

我需要做一個查詢,將給我所有不同的實驗室參考號 ,姓,名和DOBs,其中實驗室參考號 有多個關聯的姓,名和出生日期。

即查詢來突出顯示,其中一個實驗室參考號具有與它

例如相關的重複的候選

12345, Bob, Smith, 30/038/1981 
12345, Fred, Smith, 31/03/1981 

任何幫助將不勝感激。

+0

發佈完整的數據庫模式請 – Raptor

+3

什麼DBMS?你嘗試過什麼嗎?如果是的話,請張貼它和問題。如果不是:爲什麼不呢? –

+0

@ShivanRaptor:沒有必要。該問題包含相關信息。 –

回答

3
SELECT * FROM TABLE WHERE REF IN 
    (SELECT REF FROM TABLE GROUP BY REF HAVING COUNT(*) > 1) 

您也可以使用,如果需要SELECT DISTINCT *

+0

+1這將返回兩個相同的行,即使REF將與相同的'FirstName,Surname,Dob'關聯。我想這就是OP後的內容:) – Andomar

+0

是的 - 我稍後編輯了我的答案,因爲它不是100%清楚OP的要求 –

1
select RefNr 
,  Forename 
,  Surname 
,  DOB 
from YourTable yt1 
where exists 
     (
     select * 
     from YourTable yt2 
     where yt1.RefNr = yt2.RefNr 
       and 
       (
        yt1.Forename <> yt2.Forename 
        or yt1.Surname <> yt2.Surname 
        or yt1.DOB <> yt2.DOB 
       ) 
     ) 
+0

這是一個很好的答案 - 這取決於您如何閱讀問題 - 如果Bob Smith出現兩次(相同的DoB)是重複的?如果沒有,那麼這是比我更好的答案 –