Mysql 嵌套子查询

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Mysql 嵌套子查询

子查询

需求是:最外层的查询语句里面包含四个不相同表的查询,根据月份进行关联查询,每个查询语句中的where条件可以自行去定义,最后返回数量和月份

语法:

select a.月份,a.总数一,b.总数二,c.总数三,d.总数四
from (
         SELECT
             CONCAT(YEAR(br.measuring_time), '-', LPAD(MONTH(br.measuring_time), 2, '0')) AS Month,
             COUNT(DISTINCT m.id) AS 总数一
         FROM persion m
                  JOIN zs_yi br ON m.id = br.p.id
         WHERE
                 YEAR(br.measuring_time) = 2023 AND  (
                 (br.dbpval > m.dbpval_max OR br.dbpval < m.dbpval_min) OR
                 (br.sbpval > m.sbpval_max OR br.sbpval < m.sbpval_min)
        )
        GROUP BY CONCAT(YEAR(br.measuring_time), '-', LPAD(MONTH(br.measuring_time), 2, '0'))
        ) a left join
        (
        SELECT
        CONCAT(YEAR(br.measuring_time), '-', LPAD(MONTH(br.measuring_time), 2, '0')) AS Month,
        COUNT(DISTINCT m.id) AS xtCount
        FROM pserion m
        JOIN zs_er br ON m.id = br.p_id
        WHERE
        YEAR(br.measuring_time) = 2023 AND (
        (br.gluval > m.sugar_max OR br.gluval < m.sugar_min)
        )
        GROUP BY CONCAT(YEAR(br.measuring_time), '-', LPAD(MONTH(br.measuring_time), 2, '0'))
        ) b on a.月份 = b.月份 left join
        (
        SELECT
        CONCAT(YEAR(br.measuring_time), '-', LPAD(MONTH(br.measuring_time), 2, '0')) AS Month,
        COUNT(DISTINCT m.id) AS xzCount
        FROM pserion m
        JOIN zs_san br ON m.id = br.p_id
        WHERE
        YEAR(br.measuring_time) = 2023 AND (
        (br.total_cholesterol > m.blood_max OR br.total_cholesterol < m.blood_min)
        )
        GROUP BY CONCAT(YEAR(br.measuring_time), '-', LPAD(MONTH(br.measuring_time), 2, '0'))
        ) c on a.月份 = c.月份 left join
        (
        SELECT
        CONCAT(YEAR(br.measuring_time), '-', LPAD(MONTH(br.measuring_time), 2, '0')) AS Month,
        COUNT(DISTINCT m.id) AS tzCount
        FROM persion m
        JOIN zs_si br ON m.id = br.p_id
        WHERE
        YEAR(br.measuring_time) = 2023 AND (
        (br.bmi > m.bodyfat_max OR br.bmi < m.bodyfat_min)
        )
        GROUP BY CONCAT(YEAR(br.measuring_time), '-', LPAD(MONTH(br.measuring_time), 2, '0'))
        ) d on a.月份 = d.月份
        order by a.月份 asc
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
22小时前
|
SQL 关系型数据库 MySQL
MYSQL根据查询结果删除sql 去除重复id 新增对比前一条与后一条数据 去重3种方法​ 窗口函数
MYSQL根据查询结果删除sql 去除重复id 新增对比前一条与后一条数据 去重3种方法​ 窗口函数
|
2天前
|
存储 关系型数据库 MySQL
MySQL查询:过滤掉字母
【5月更文挑战第5天】
|
2天前
|
存储 算法 关系型数据库
MySQL怎样处理排序⭐️如何优化需要排序的查询?
MySQL怎样处理排序⭐️如何优化需要排序的查询?
|
2天前
|
SQL 关系型数据库 MySQL
MySQL数据库的约束+进阶版新增与查询-2
MySQL数据库的约束+进阶版新增与查询
14 1
|
2天前
|
关系型数据库 MySQL 测试技术
MySQL数据库的约束+进阶版新增与查询-1
MySQL数据库的约束+进阶版新增与查询
16 1
|
2天前
|
SQL 存储 关系型数据库
MySQL查询原理,看这一篇就够了!
MySQL查询原理,看这一篇就够了!
|
2天前
|
SQL 数据库
mysql-相关子查询
该任务是找出未选修任何课程的学生学号和姓名。通过在教学数据库中使用SQL子查询,先获取选修了课程的学生学号集合,然后在外层查询中找出不在这个集合中的学生信息。代码实现为:`select sno, sname from student where sno not in (select distinct sno from score);`
19 0
|
2天前
|
数据库
mysql-相关子查询
任务是找出选修了课程004的学生姓名和所在系。在teachingdb数据库中,使用子查询和EXISTS关键字来实现。代码示例:`select sname, sdept from student a where exists (select * from score b where a.sno=b.sno and b.cno=004);`
11 0
|
2天前
|
关系型数据库 MySQL 数据库
MySQL -相关子查询
该任务是数据库查询,目标是找出所有选修了&quot;刘东明&quot;所选全部课程的学生学号。需运用子查询和NOT EXISTS运算符。代码首先选择学生表中名字不是&#39;刘东明&#39;的学生,然后检查他们是否存在与&#39;刘东明&#39;相同的所有课程记录。
17 0
|
2天前
|
SQL 数据库
mysql-相关子查询
在教学数据库teachingdb中,使用子查询和NOT EXISTS运算符找出选修了所有课程的学生学号。代码如下: ```sql SELECT sno FROM student a WHERE NOT EXISTS (SELECT cno FROM course b WHERE NOT EXISTS (SELECT * FROM score WHERE sno=a.sno AND cno=b.cno)); ``` 这段SQL语句查找的是没有匹配未选修课程记录的学生学号,即这些学生选修了所有课程。
11 0

推荐镜像

更多