不同但不是真的
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;
我有 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;