【问题标题】:How to remove duplicates when use full join and have null values in cells使用完全连接并在单元格中有空值时如何删除重复项
【发布时间】:2017-07-15 00:33:17
【问题描述】:

这是我的基本表:

编号 |SITE_WT |SITE_WT_DATA |SITE_NWT |SITE_NWT_DATA A
|1 |NULL |1 |NULL

这是我的选择和完整连接:

 SELECT      Number,T1.site ,T2.site,T3.site ,T4.site   
     FROM [A] AS T1
     FULL JOIN [B] AS T2
        ON T1.number=T2.number  
     FULL JOIN [C] AS T3
        ON  T2.number = T3.number  
     FULL JOIN [D] AS T4
        ON T3.number=T4.number 

这是结果:

编号 |SITE_WT |SITE_WT_DATA |SITE_NWT |SITE_NWT_DATA A |1234
|NULL |NULL |NULL A |NULL |NULL |1234
|空

我有 Null 的问题,它破坏了我的 join 并且我有重复,因为正确的结果必须是,每个不同的数字只有一行,任何建议如何做到这一点

正确结果:

编号 |SITE_WT |SITE_WT_DATA |SITE_NWT |SITE_NWT_DATA A |1234
|NULL |1234 |NULL

【问题讨论】:

  • 为什么使用全连接而不是内连接?此外,如果所有表上都存在数字,则您的选择不明确,不应运行
  • @kalkov 请检查发布的答案是否有用或需要进行任何修改
  • 我是 sql 新手,我的导师告诉我,我需要 FULL JOIN 而不是 INNER,当我的正常值不为 NULL 时它可以正常工作
  • @Kalkov 根据您的数据,我们可以为您提供指导,但在表级别,如何进行连接和获取数据取决于您,但我们的回答是获得准确的输出
  • @mohan111 谢谢!现在我将测试

标签: sql-server join null duplicates


【解决方案1】:

使用 MAX()

 SELECT      Number,MAX(T1.site) SITE_WT,MAX(T2.site)SITE_WT_DATA,MAX(T3.site)SITE_NWT ,MAX(T4.site) SITE_NWT_DATA  
         FROM [A] AS T1
         FULL JOIN [B] AS T2
            ON T1.number=T2.number  
         FULL JOIN [C] AS T3
            ON  T2.number = T3.number  
         FULL JOIN [D] AS T4
            ON T3.number=T4.number 
            GROUP BY Number

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2019-11-27
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多