不同但不是真的

DISTINCT but not really

我有 table 类似于以下内容:

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  

我想 return 像这样:

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 都存在这样的四元组,请选择 always wow。 有没有办法指定 DISTINCT 删除哪些行?

您可以在此处使用 max()(或 min())的聚合,因为 NULL 不大于、不等于、也不小于任何其他值。

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