【问题标题】:How can I remove duplicates where some duplicates have to be excluded from the removal based on data in a separate table?如果必须根据单独表中的数据从删除中排除某些重复项,如何删除重复项?
【发布时间】:2014-04-18 11:25:56
【问题描述】:

我正在使用 SQL 2008 尝试删除一些特殊情况的重复项,但我无法弄清楚或找到解决方案。

我有一个表 (CUST_REF),它的 CUST_ID 列是表 (CUST_MAST) 的外键。 CUST_REF 是我关心的重复表。 CUST_REF 中有重复的记录,如下例所示,ID 1 & 2 和 3 & 4(不包括 ID 列)。虽然 ID 3 和 4 在该表中是重复的,但如果我们在 CUST_MAST 中查找它们的 CUST_ID,我们会看到它们引用了不同的 CUST_NO 值,因此这些重复记录很好,我不想删除它们中的任何一个。

CUST_REF
ID   CUST_ID   DEPT   DIV   ATT_NAME   ATT_VALUE      
 1        11     01    01       PASS       12345
 2        12     01    01       PASS       12345
 3        15     02    21       PASS       98765
 4        16     02    21       PASS       98765
 5        23     10    11       PASS       98765

CUST_MAST
CUST_ID   CUST_NO
     11       310
     12       310
     15       242
     16       911
     23       750

我正在使用Group By DEPT, DIV, ATT_NAME Having Count > 1 在 CUST_REF 中查找重复项,但我不知道如何使用另一个表中的 CUST_NO 过滤重复项。非常感谢任何帮助。

【问题讨论】:

  • 关于您的样本数据的问题。在 CUST_MAST 中,CUST_!D 17 实际上应该是 16 吗?此外,您使用的 RDBMS 可能会影响解决方案。
  • 是的,我更改了该 ID。我正在使用 MSSQL 2008。

标签: sql duplicate-removal


【解决方案1】:

加入 CUST_ID 上的表,然后将 CUST_ID 添加到您的 Group By。这将包括分组前的第二个表,并避免“错误”重复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    相关资源
    最近更新 更多