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;

你可能感兴趣的:(sql 嵌套查询,并通过分组 和字段连接函数GROUP_CONCAT 查询出符合业务的结果集)