虽说SQL语法,这些主流的数据库引擎都支持,但是每一个数据库引擎都有自己的特性,例如统计并显示非重复的数据。
mysql的实现形式是:
数据库test
id name
1 agle
2 blibli
3 cat
4 cat
5 blibli
比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。
select distinct name from test
得到的结果是:
name
agle
blibli
cat
如果我们需要多个字段呢?该怎么办?我们继续往下看
select distinctuid, name from test
结果会是:
uid name
1 agle
2 blibli
3 cat
4 cat
5 blibli
distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与name都相同的才会被排除
解决方法: select uid, name from tablegroup by name
如果在加上count这个统计聚合函数呢?为了统计agle,blibli,cat出现的次数呢?
情况仍然是这样, 你会发现如果你采用如下的sql语句执行得到的结果也不是你想要的~
select distinct uid, name, count(*) from test
结果会是:
uid name count(*)
1 agle 5
显然不是我们需要的,mysql需要使用group by 来完成这些
select distinct uid, name, count(*) from test group by name
结果是:
uid name count(*)
1 agle 1
2 blibli 2
3 cat 2
那如果我们想要显示多个字段的时候,怎么办呢?
可以在 group by 后面接上多个字段,如 group by name, uid
其实此时,distinct有没有结果都是一样的,感觉mysql中去重统计一般都是mysql使用group by 关键字,distinct并没有启动作用,如理解有误
望指正~