sql 嵌套查询,并通过分组 和字段连接函数GROUP_CONCAT 查询出符合业务的结果集

开发做了好几年但sql 一直很弱,复杂的sql 没怎么写过。其实是因为不会写。故事是这样的,一个业务逻辑 比较复杂,用Java处理三四十行代码。而且很蹩脚。领导看了说直接写sql 。。。。特此记录下。。权当笔记了 不喜勿喷

首先说下:

1:GROUP_CONCAT() 他的作用是   将一对多的变体 ,按照你指定的 规则 整合为一个字段。 参数 SEPARATOR 关键字 用来指定分隔符 。

2:嵌套查询,最外层的 select 会把次外层的结果结作为查询结果集 再次进行筛选。

3:利用分组 将重复的字段 合并。

以下是搞出来的SQL 记录下权当笔记:

SELECT p.cname,GROUP_CONCAT(p.hname,p.t1) hant1 FROM (

SELECT    o.cname,o.hname,GROUP_CONCAT(o.alevel SEPARATOR ' ') AS t1
        FROM
            (
                SELECT    X.NAME AS cname,Y.NAME AS hname,z.hallarealevel AS alevel
                FROM
                    `CEC_Cinema` X
                LEFT JOIN CEC_Hall Y ON X.id = Y.cinemaId
                LEFT JOIN CEC_HallArea z ON z.hallid = Y.id
                LEFT JOIN CEC_ChannelSettings_HallArea m ON m.hallAreaId = z.id
                WHERE
                    m.`settingsId` = '98a4da75-db9a-4b08-9afe-8d2fbf127e7f'
            ) o    GROUP BY o.cname,o.hname
        ) AS  p  GROUP BY p.cname;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值