美文网首页
分组查询的sql

分组查询的sql

作者: 佛说子曰道道 | 来源:发表于2022-07-04 15:24 被阅读0次

有个需求是这样的:大区和省份是一对多的关系。那么肯定在省份表中,有个逻辑外键叫大区id。这时候,我想看看大区的名称、属性、负责人等信息,还想看看大区下的省份数量。如果大区的表为area,省份表为province。
假设表的内容是这样:


image.png

可以得出sql语句如下:

--  犯懒没加多余字段
select area.id,area.name,count(province.id)
from area left join province on area.id=province.areaId 
group by area.id

然而得到的结果确是这样

image.png
可以看到,江北区是没有的
如果想要去掉,只需要添加一句:where province.areaId is not null
那么这时候,还想要province的id,然后做下一步的处理,该咋办呢。
用到了一个函数是这样的
select area.id,area.name,count(province.id),group_concat(province.id) 
from area left join province on area.id=province.areaId 
where province.areaId is not null
group by area.id

最终能得到的结果就是


image.png

那么再深入一点,是都统计出来了。但是我还想筛选一下,看汉东省所属的大区,和这个大区下的所有省市,怎么办呢?
在sql优化的时候,有个原则叫小表驱动大表,而使用的关键字叫做exists,能不能利用一下呢?
然后就写出了这样的语句

select area.id,area.name,count(province.id),group_concat(province.id) 
from area left join province on area.id=province.areaId 
where province.areaId is not null
and exists (select 1 from province p where p.areaId=area.id and p.id=5)
group by area.id

可以先想象,有一个连接的大长表,就像上图那样。那么重点就是筛选,筛选什么?筛选包含汉东省的区域,并且这个区域就是大长表的id(area.id)。所以就是如果有一条记录证明区域和省份是有联系的,那就应该保存下来这个大长表的记录。exists中的语句可以返回任意结果,0,1,p.id……
那么这里可以再次使用left join,而不是exists达到目的么? maybe .

相关文章

  • SQL分组查询

    一.分组查询 1.使用group by进行分组查询 在使用group by关键字时,在select列表中可以指定的...

  • 分组查询的sql

    有个需求是这样的:大区和省份是一对多的关系。那么肯定在省份表中,有个逻辑外键叫大区id。这时候,我想看看大区的名称...

  • Sql分组后查询条数

    先看下一般的查询sql语句和分组sql语句 但是想知道分组后,一共有多少组数据怎么做呢,下面我们用子查询的方式实现...

  • sql 分组查询-mysql

    group by <分组项> [having <分组筛选条件>] 1.统计各班人数: select 班级编号,co...

  • SQL语句:分组查询

    在对数据表中数据进行统计时,可能需要按照一定的类别分别进行统计。比如查询每个部门的员工数。 使用GROUP BY按...

  • SQL-分组查询

    分组查询 语法: 注意:查询列表必须特殊,要求是分组函数和group by后出现的字段 特点: 分组查询中的筛选条...

  • sql 常用的分组查询

    postgre postgresql 查询集合结果用逗号分隔返回字符串处理 转载 https://blog.51c...

  • MySQL白菜教程(Level 7)

    1. 分组查询 GROUP BY 子句GROUP BY 函数就是 SQL 中用来实现分组的函数,其用于结合聚合函数...

  • need

    sql语句执行原理,顺序 存储过程使用场景 分组 联结查询 索引

  • MySQL基础语法

    SQL语句 完整的查询 基本查询(以students为例说明) 聚合函数 (快速得到统计数据) 分组查询group...

网友评论

      本文标题:分组查询的sql

      本文链接:https://www.haomeiwen.com/subject/gfmdbrtx.html