SQL - 从表格中删除重复行

3

我该如何从我的表格中删除重复的行?我在互联网上搜索了很多,但是仍然无法解决这个问题。以下是我写的代码:

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

以下是结果:

重复数据

在上面的图片中,您会注意到第1行的数据在第6行中重复出现。如何删除所有重复的行?有什么建议吗?


PostgreSQL、Oracle还是SQL Server?你怎么会有两个字段名为PatientID? - Juan Carlos Oropeza
Sql Server... PatientID字段是相同的列。我正在将它们与自身进行比较。 - bluefox
哦,那很简单...将 A.PatientID <> A2.PatientID 更改为 A.PatientID < A2.PatientID - Juan Carlos Oropeza
成功了!非常感谢!如果您写出一个答案,我会将您标记为最佳答案。 - bluefox
当然,谢谢你的提示! - bluefox
显示剩余6条评论
2个回答

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
您不能通过任意选择患者A始终成为ID较小的一对中的一个来生成对称重复项。
...
Where A.PatientID < A2.PatientID

如果原始表中有重复项,则这将无法帮助,但根据其名称,它应该是主键和/或在“PatientID”上具有非空和唯一索引


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接