SQL - 从表

时间:2016-01-23 04:25:35

标签: sql sql-server tsql

如何从表格中删除重复的行?我在互联网上搜索过,但我还没有能够解决这个问题。这就是我写的:

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行中重复。如何删除所有重复的行?有什么建议吗?

2 个答案:

答案 0 :(得分: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 :(得分:1)

您无法生成对称重复项 首先,任意选择患者A至少是具有较小ID的一对

...
Where A.PatientID < A2.PatientID

如果您在原始表中有重复但是它的名称应该是主键和/或具有非NULL&amp; “PatientID”的唯一索引