Mysql 嵌套子查询

文章目录

大家好!我是夏小花,今天是2024年1月13日|腊月初三

子查询

需求是:最外层的查询语句里面包含四个不相同表的查询,根据月份进行关联查询,每个查询语句中的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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值