下面先来看看例子:
库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。
好像达到效果了,可是没有id的值,改一下查询语句吧:
最后一项是多余的,不用管就行了,目的达到
table表
id | name |
1 | a |
2 | b |
3 | c |
4 | c |
5 | d |
比如我想用一条语句查询得到name不重复的所有数据,那就必须
使用distinct去掉多余的重复记录。
select distinct name from table
得到的结果是:
name |
a |
b |
c |
d |
select distinct name, id from table
结果会是:
id | name |
1 | a |
2 | b |
3 | c |
4 | c |
5 | d |
distinct怎么没起作用?作用是起了的,不过他同时作用了两个
字段,也就是必须得id与name都相同的才会被排除
我们再改改查询语句:
select id, distinct name from table
很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能,照样报错。
下面方法可行:
select *, count(distinct name) from table group by name
结果:
id | nam | count(distinct name) |
1 | a | 1 |
2 | b | 1 |
3 | c | 1 |
4 | d | 1 |
group by 必须放在 order by 和 limit之前,不然会报错