【问题标题】:SQL - Remove Duplicate Rows From TableSQL - 从表中删除重复的行
【发布时间】:2016-01-23 12:51:58
【问题描述】:

如何从表中删除重复的行?我已经搜索了互联网,但我无法解决这个问题。这是我写的:

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

【问题讨论】:

  • 您要删除吗?或从选择中删除它?你的 rdbms 是什么?
  • 我想从 select 语句中删除它。
  • postgres、oracle 还是 sql server?你怎么有两个字段名称 PatientID ?
  • Sql server... PatientID 字段是相同的列。我正在将它们与自己进行比较。
  • 我正在尝试展示两对拥有同一位医生的患者。

标签: sql sql-server tsql


【解决方案1】:

你不需要 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

【讨论】:

    【解决方案2】:

    您无法生成对称副本 首先,通过任意选择患者 A 始终是 ID 较小的一对

    ...
    Where A.PatientID < A2.PatientID
    

    如果您在原始表中有 dup 但按其名称应该是主键和/或在“PatientID”上具有非 NULL 和唯一索引,这将无济于事

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-10
      • 2013-02-13
      • 2021-06-13
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      • 2010-11-05
      相关资源
      最近更新 更多