现在有这样一个数据表book
| id | first_name | last_name | city | age |
| 1 | Jason | Martin | Toronto | 15 |
| 2 | Alison | Mathews | Vancouver | 16 |
| 3 | James | Mathews | Vancouver | 14 |
| 4 | Celia | Rice | Vancouver | 14 |
| 5 | David | Larry | New York | 16 |
group by基本实例
我们对city字段进行分组查询
SELECT * FROM book GROUP BY city
结果如下:
| id | first_name | last_name | city | age |
| 1 | Jason | Martin | Toronto | 15 |
| 2 | Alison | Mathews | Vancouver | 16 |
| 5 | David | Larry | New York | 16 |
可以看出,group by是根据city来进行分组的,因为book表中有三个不同的city值,所以会出现三行数据,并且相同的city只返回结果集中的第一条数据。
group by多个字段
下面来看一下group by后面跟多个字段
SELECT * FROM book GROUP BY city,last_name
结果如下:
| id | first_name | last_name | city | age |
| 1 | Jason | Martin | Toronto | 15 |
| 2 | Alison | Mathews | Vancouver | 16 |
| 4 | Celia | Rice | Vancouver | 14 |
| 5 | David | Larry | New York | 16 |
group by后面跟多个字段如何理解呢?GROUP BY city,last_name是指所有city,last_name项只要有一个不相同就会分一个组的。因为上面book表中第二行数据与第三行数据的city和last_name相同,所以会舍弃其中的一行数据,一般都是舍弃后面一行,所以第二行数据保留了。
<##ads_in_article_manong##>
group by与聚合函数
一般情况下,group by都会与聚合函数一起使用,以达到复杂的数据查询要求。
比如我们要根据city分组后,获取每一组有多少条数据
SELECT *,count(*) FROM book GROUP BY city
结果为:
| id | first_name | last_name | city | age | count(*) |
| 1 | Jason | Martin | Toronto | 15 | 1 |
| 2 | Alison | Mathews | Vancouver | 16 | 3 |
| 5 | David | Larry | New York | 16 | 1 |
group by having
group by having用于指示被选择的行必须满足的条件
比如,我们根据city分组,但我们只需要查询出每一组的数据条数大于1的。
SELECT *,count(*) FROM book GROUP BY city having count(*)>1
结果集为:
| id | first_name | last_name | city | age | count(*) |
| 2 | Alison | Mathews | Vancouver | 16 | 3 |
继续阅读与本文标签相同的文章
上一篇 :
php使用递归方法将多维数组转换为xml
下一篇 :
今天是阿兹海默症日,这和谷歌街景有什么关系?
-
互联网之光大会的黑科技,总有一款惊艳你!
2026-05-14栏目: 教程
-
微信宣布一项新举措,关系到每一个用户,网友一致力挺:干得漂亮!
2026-05-14栏目: 教程
-
微软建议企业客户卸载KB4520062累积更新
2026-05-14栏目: 教程
-
他让我国芯片研究停滞13年,还骗走11亿研发资金,现状如何?
2026-05-14栏目: 教程
-
健乐教学机器人可开展的教学实训内容
2026-05-14栏目: 教程
