Loading...  #### GROUP_CONCAT(expr) 组连接函数 **GROUP_CONCAT(expr)** 组连接函数可以返回分组后指定字段的字符串连接形式,并且可以指定排序逻辑,以及连接字符串,默认为英文逗号连接。这里继续用 order_diy 表举例:sql 如下: ```sql SELECT name, GROUP_CONCAT(title ORDER BY id desc SEPARATOR '-') from order_diy GROUP BY name ORDER BY NULL; ``` 查询结果: 如上我们通过 **GROUP_CONCAT(title ORDER BY id desc SEPARATOR '-')** 语句,指定分组连接 title 字段并按照 id 排序,设置连接字符串为 `-`。 #### 自连接查询 自连接查询是 sql 语法里常用的一种写法,掌握了自连接的用法我们可以在 sql 层面轻松解决很多问题。这里用 tree 表举例,结构以及表数据展示:  tree 表中通过 pid 字段与 id 字段进行父子关联,假如现在有一个需求,我们想按照父子层级将 tree 表数据转换成 `一级职位 二级职位 三级职位` 三个列名进行展示,sql 如下: ```sql SELECT t1.job_name '一级职位', t2.job_name '二级职位', t3.job_name '三级职位' from tree t1 join tree t2 on t1.id = t2.pid left join tree t3 on t2.id = t3.pid where t1.pid = 0; ``` 结果如下: 我们通过 **tree t1 join tree t2 on t1.id = t2.pid** 自连接展示 `一级职位 二级职位`,再用 **left join tree t3 on t2.id = t3.pid** 自连接展示 `二级职位 三级职位`,最后通过**where 条件 t1.pid = 0**过滤掉非一级职位的展示,完成这个需求。 #### with rollup 在分组统计数据的基础上再进行统计汇总 MySql 中可以使用 with rollup 在分组统计数据的基础上再进行统计汇总,即用来得到 group by 的汇总信息。这里继续用order_diy 表举例,sql 如下: ```sql SELECT name, SUM(money) as money FROM order_diy GROUP BY name WITH ROLLUP; ``` 查询结果:  可以看到通过 **GROUP BY name WITH ROLLUP** 语句,查询结果最后一列显示了分组统计的汇总结果。但是 name 字段最后显示为 null,我们可以通过 `coalesce(val1, val2, ...)` 函数,这个函数会返回参数列表中的第一个非空参数。 ```sql SELECT coalesce(name, '总金额') name, SUM(money) as money FROM order_diy GROUP BY name WITH ROLLUP; ``` 查询结果:  转载自 [https://juejin.cn/post/7209625823580766264](https://juejin.cn/post/7209625823580766264) -------------------------------后续有新知识再更新 最后修改:2023 年 06 月 20 日 © 允许规范转载 打赏 赞赏作者 赞 如果觉得我的文章对你有用,请随意赞赏