Mysql篇:MySQL distinct 与 group by 去重(where/having)
在MySQL中,DISTINCT
和GROUP BY
经常被用来去除查询结果中的重复行。DISTINCT
用于返回唯一不同的值,而GROUP BY
用于将相同的值分组在一起。
当你想要去重时,可以使用DISTINCT
关键字,例如:
SELECT DISTINCT column_name FROM table_name;
如果你想要根据某一列的值进行去重,并且计算其他列的统计数据,可以使用GROUP BY
,例如:
SELECT column1, COUNT(column2) FROM table_name GROUP BY column1;
在这个例子中,column1
是分组依据,COUNT(column2)
是对column2
的统计函数。
如果你想要结合使用DISTINCT
和GROUP BY
去除重复行并进行统计,可以这样写:
SELECT DISTINCT column1, COUNT(column2) FROM table_name GROUP BY column1;
在这个例子中,column1
是去重依据,COUNT(column2)
是对column2
的统计函数。
另外,WHERE
和HAVING
也常用于去重条件过滤,WHERE
是行级过滤,HAVING
是组级过滤。例如:
SELECT column1, COUNT(column2) FROM table_name WHERE column3 = 'some_value' GROUP BY column1;
SELECT column1, COUNT(column2) FROM table_name GROUP BY column1 HAVING COUNT(column2) > 1;
第一个查询中,WHERE column3 = 'some_value'
用于在分组前过滤数据。第二个查询中,HAVING COUNT(column2) > 1
用于在分组后过滤数据。
评论已关闭