我相信SQL中的GROUP BY会使DISTINCT变得不必要,因为如果按列分组,那么结果中只会有一个值,但我想确保正确理解关键字。是不是你不需要这样做:
SELECT DISTINCT a_uuid
FROM table
GROUP BY a_uuid
HAVING NOT bool_or(type = 'Purchase')
因为你可以完全放弃DISTINCT吗?
答案 0 :(得分:3)
此查询中不需要distinct
。通常,您distinct
group by
不需要distinct
。实际上有一些查询将group by
和group by
放在一起,但它们非常罕见。
此查询中需要having
,因为您在SELECT a_uuid
FROM table
GROUP BY a_uuid
HAVING NOT bool_or(type = 'Purchase')
子句中使用了聚合函数。所以,使用:
{{1}}
答案 1 :(得分:2)
只要不涉及聚合函数,您就可以使用DISTINCT而不是GROUP BY。
使用DISTINCT或GROUP BY - 而不是两者!
答案 2 :(得分:1)
如果您只想删除重复项,请使用DISTINCT。如果要应用聚合运算符(MAX,SUM,GROUP_CONCAT,...或HAVING子句),请使用GROUPY BY。
如果您对多列使用DISTINCT,则结果集将不会按GROUP BY分组,并且您不能将聚合函数与DISTINCT一起使用。
总的来说,这两者在功能问题上有所不同,但是,这两者在特定数据集中返回相同的输出。