2016-01-23 275 views
3

如何從我的表中刪除重複的行?我搜索了互聯網,但我一直無法解決這個問題。下面是我寫的東西:SQL - 從表中刪除重複的行

WITH C As 
(
Select A.PatientID, A.DoctorID 
From Appointment As A 
) 

Select Distinct A.PatientID, A2.PatientID, A.DoctorID 
From Appointment As A 
    Inner Join C as A2 
     On A.DoctorID = A2.DoctorID 
Where A.PatientID <> A2.PatientID 
Order By A.PatientID Asc 

這裏的結果:

Duplicate Data

在上面的圖片,你會發現,第1行中的數據在第6行被複制如何我刪除所有重複的行?有什麼建議麼?

+0

要刪除嗎?或從選擇中刪除它?你的rdbms是什麼? –

+0

我想從select語句中刪除它。 – BlueFox

+0

postgres,oracle或sql server?你有兩個字段名稱PatientID? –

回答

3

你不需要的CTE爲這個

嘗試

SELECT DISTINCT PatientId, PatientId, DoctorID 
FROM Appointment A1 
JOIN Appointment A2 
    ON A1.PatientId < A2.PatientId 
    AND A1.DoctorID = A2.DoctorID 
Order By A1.PatientID Asc 
1

您不能生成對稱的DUP 首先任意選擇一個病人一到百達是一對用的一個較小的ID

... 
Where A.PatientID < A2.PatientID 

如果你有原始表的DUP,但它的名字應該是一個主鍵和/或有沒有這將不利於t NULL &「PatientID」上的唯一索引