MySQL中COUNT和DISTINCT的使用

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  | COUNT(*) |
+——–+———-+
| Benny        2 |
| Diane   |        2 |
| Gwen         3 |
| Harold |        2 |
+——–+———-+
注 意,使用GROUP BY对每个owner的所有记录分组,没有它,你会得到错误消息

COUNT()和GROUP BY以各种方式分类你的数据。下列例子显示出进行动物普查操作的不同方式:
每种动物的数量:
mysql> SELECT species, COUNT(*) FROM pet GROUP BY species;
+———+———-+
| species | COUNT(*) |
+———+———-+
| bird          2 |
| cat           2 |
| dog           3 |
| hamster |        1 |
| snake         1 |
+———+———-+

每种性别的动物数量:
mysql> SELECT sex, COUNT(*) FROM pet GROUP BY sex;
+——+———-+
| sex  | COUNT(*)
| +——+———-+
| NULL |        1 |
| f          4 |
| m          4 |
+——+———-+
在这个输 出中,NULL表示”未知性别”
按种类和性别组合的动物数量:
mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
+———+——+———-+
| species | sex  | COUNT(*) |
+———+——+———-+ |
bird    | NULL |        1 |
| bird    | f          1 |
| cat     | f          1 |
| cat     | m          1 |
| dog     | f          1 |
| dog     | m          2 |
| hamster | f          1 |
| snake   | m          1 |
+———+——+———-+
当只对狗和猫进行时,应为:
mysql> SELECT species, sex, COUNT(*) FROM pet WHERE species = ‘dog’ OR species = ‘cat’ GROUP BY species, sex; +———+——+———-+
| species | sex  | COUNT(*)
| +———+——+———-+
| cat     | f          1 |
| cat     | m          1 |
| dog     | f          1 |
| dog     | m          2 |
+———+——+———-+

如果你仅需要知道已知性别的按性别的动物数目:
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 |
+———+——+———-+

郑重声明:

1 本资源来源于互联网,资源的版权归资源原作者所持有,受《中华人民共和国著作权法》等相关法律保护。

2 由于无法和原作者取得联系,所以上传的部分资源无法先通过原作者的同意就分享给大家了,如本资源侵犯了您(原作者)的权益,请联系我们(微信号 xiaohaimei1989),我们会立马删除您的资源,并向您表达诚挚的歉意!

3 本站是一个公益型网站,分享资源的目的在于传播知识,分享知识,收取一点点打赏的辛苦费是用于网站的日常运营开支,并非用于商业用途。

4 本站资源只提供学习和参考研究使用,使用过后请在第一时间内删除。本站不承担资源被单位或个人商用带来的法律责任。

发表评论