不借助其他工具,单纯的 SQL 语句能不能做到这种效果

2022 年 1 月 13 日
 617953997
1 子用户
用户 1 1 子用户
1 子用户
2 子用户
用户 2 2 子用户

用户 1 和用户 2 最好可以类似于 Excel 中的合并单元格 合并掉上下的空行.

4312 次点击
所在节点    MySQL
15 条回复
littlecap
2022 年 1 月 13 日
搜一下 for xml path('')
Unicorns96
2022 年 1 月 13 日
group by
MIUIOS
2022 年 1 月 13 日
SQL 一大堆函数可以玩的 肯定可以
zgc27wo
2022 年 1 月 13 日
select 用户, GROUP_CONCAT(子用户) from 表 group by 用户; 子用户是 [ 2 子用户,2 子用户 ] 这样的形式.
singerll
2022 年 1 月 13 日
结果集上能做到,但合并单元格这个格式我觉得不能。。。
2i2Re2PLMaDnghL
2022 年 1 月 13 日
合并单元格是破坏表格的行为,逻辑上来说就行不通。倒不如说合并单元格本身就是糟糕的设计。
c6h6benzene
2022 年 1 月 13 日
合并单元格是展示时候的需求吧,你 select 的结果集也要做到这效果…?
RedBeanIce
2022 年 1 月 13 日
建议前端去做。。mysql 这个做不到吧
vanton
2022 年 1 月 13 日
这是前端的活,拿到数据前端自行组织。
后端不要考虑这种花活,除了增加负担、更容易出错外,没任何好处。
vincent7245
2022 年 1 月 13 日
SELECT
CASE WHEN FIRST_B=B THEN A ELSE '' END AS A_VALUE,
B
FROM
(SELECT
FIRST_VALUE(B) OVER(PARTITION BY A ORDER BY B) AS FIRST_B,
A,
B
FROM T) T0
flyingghost
2022 年 1 月 13 日
反向思考一下,关系型数据库做不到合并单元格,但可以“拆分”单元格啊。
用户 1, {"1 子用户", "1 子用户", "1 子用户"}
用户 2, {"2 子用户", "2 子用户", "2 子用户"}
返回这么两行就行了。/手动狗头
Masonnn
2022 年 1 月 13 日
row_number() over(partition by xxx) ?
shakaraka
2022 年 1 月 13 日
这个是展示端的功能,和数据库有毛线关系
final7genesis
2022 年 1 月 13 日
让前端去搞, 前 n 列相同的自动合并
Kilerd
2022 年 1 月 13 日
合并单元格应该做不到吧,但是可以 sort by 用户,然后 row_number partition by 用户,然后 row_number = 0 才显示用户名

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/827969

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX