【问题标题】:DISTINCT but not really不同但不是真的
【发布时间】:2022-01-14 22:25:01
【问题描述】:

我有类似下面的表格:

data1 | data2 | data3 | data4 | important data
______________________________________________
res1  | res1  | res1  | res1  | NULL         
res2  | res2  | res2  | res2  | NULL         
res2  | res2  | res2  | res2  | wow         
res3  | res3  | res3  | res3  | NULL         
res4  | res4  | res4  | res4  | wow  

我希望它返回如下内容:

data1 | data2 | data3 | data4 | important data
______________________________________________
res1  | res1  | res1  | res1  | NULL               
res2  | res2  | res2  | res2  | wow         
res3  | res3  | res3  | res3  | NULL         
res4  | res4  | res4  | res4  | wow  

所以选择 distinct(data1, data2, data3, data4) 但如果 NULL 和 wow 都存在这样的四元组,请始终选择 wow。 有没有办法指定 DISTINCT 消除哪些行?

【问题讨论】:

  • 请编辑您的问题并明确您想要达到的目标。您的示例似乎只是删除了某一行,因为一列是 NULL,为什么要删除 res2 而不是 res1
  • 您展示了一个带有 NULL 和 wow 的重复四元组示例;如果是NULL,wow,skycraft呢?

标签: mysql sql distinct


【解决方案1】:

您可以在此处将聚合与max()(或min())一起使用,因为NULLs 不大于、不等于或小于任何其他值。

SELECT data1,
       data2,
       data3,
       data4,
       max(importantdata) AS importantdata
       FROM elbat
       GROUP BY data1,
                data2,
                data3,
                data4;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多