1. count不重复的记录条数:SELECT COUNT(DISTINCT id) FROM tablename;2. 需要返回记录不同的id的具体值:SELECT DISTINCT id FROM tablename;
3. 返回mysql表中2列以上的结果:SELECT DISTINCT id, type FROM tablename;
如上DISTINCT 同时作用了两个字段, 必须得id 与type都相同的才被排除了
4. 这时候可以考虑使用group_concat 函数来进行排除,不过这个mysql函数是在mysql 4.1以上才支持的
5. 其实还有另外一种解决方法,就是使用SELECT id, type, count(DISTINCT id) FROM tablename;返回的结果是, 只有id不同的所有结果
举例:
计算你拥有动物的总数目与“在pet表中有多少行?”是同样的问题,查询应为:
mysql> SELECT COUNT(*) FROM pet;
+———-+
| COUNT(*) |
+———-+
| 9 |
+———-+
在前面,你检索了拥有宠物的人的名字。如果你想要知道每个主人有多少宠物:
mysql> SELECT owner, COUNT(*) FROM pet GROUP BY owner;
+——–+———-+
| owner
+——–+———-+
| Benny
| Diane
| Gwen
| Harold |
+——–+———-+
注 意,使用GROUP BY对每个owner的所有记录分组,没有它,你会得到错误消息
COUNT()和GROUP BY以各种方式分类你的数据。下列例子显示出进行动物普查操作的不同方式:
每种动物的数量:
mysql> SELECT species, COUNT(*) FROM pet GROUP BY species;
+———+———-+
| species | COUNT(*) |
+———+———-+
| bird
| cat
| dog
| hamster |
| snake
+———+———-+
每种性别的动物数量:
mysql> SELECT sex, COUNT(*) FROM pet GROUP BY sex;
+——+———-+
| sex
| +——+———-+
| NULL |
| f
| m
+——+———-+
在这个输 出中,NULL表示”未知性别”
按种类和性别组合的动物数量:
mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
+———+——+———-+
| species | sex
+———+——+———-+ |
bird
| bird
| cat
| cat
| dog
| dog
| hamster | f
| snake
+———+——+———-+
当只对狗和猫进行时,应为:
mysql> SELECT species, sex, COUNT(*) FROM pet WHERE species = ‘dog’ OR species = ‘cat’ GROUP BY species, sex; +———+——+———-+
| species | sex
| +———+——+———-+
| cat
| cat
| dog
| dog
+———+——+———-+
如果你仅需要知道已知性别的按性别的动物数目:
mysql> SELECT species, sex, COUNT(*) FROM pet WHERE sex IS NOT NULL GROUP BY species, sex;
+———+——+———-+
| species | sex | COUNT(*) |
+———+——+———-+ |
bird | f | 1 |
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
| hamster | f | 1 |
| snake | m | 1 |
+———+——+———-+