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

2022-01-13 10:52:55 +08:00
 617953997
1 子用户
用户 1 1 子用户
1 子用户
2 子用户
用户 2 2 子用户

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

3398 次点击
所在节点    MySQL
15 条回复
littlecap
2022-01-13 11:17:42 +08:00
搜一下 for xml path('')
Unicorns96
2022-01-13 11:36:12 +08:00
group by
totoro52
2022-01-13 11:45:29 +08:00
SQL 一大堆函数可以玩的 肯定可以
zgc27wo
2022-01-13 12:05:14 +08:00
select 用户, GROUP_CONCAT(子用户) from 表 group by 用户; 子用户是 [ 2 子用户,2 子用户 ] 这样的形式.
singerll
2022-01-13 12:23:09 +08:00
结果集上能做到,但合并单元格这个格式我觉得不能。。。
2i2Re2PLMaDnghL
2022-01-13 12:40:35 +08:00
合并单元格是破坏表格的行为,逻辑上来说就行不通。倒不如说合并单元格本身就是糟糕的设计。
c6h6benzene
2022-01-13 13:03:06 +08:00
合并单元格是展示时候的需求吧,你 select 的结果集也要做到这效果…?
RedBeanIce
2022-01-13 13:10:58 +08:00
建议前端去做。。mysql 这个做不到吧
vanton
2022-01-13 14:06:15 +08:00
这是前端的活,拿到数据前端自行组织。
后端不要考虑这种花活,除了增加负担、更容易出错外,没任何好处。
vincent7245
2022-01-13 14:09:52 +08:00
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-01-13 14:14:51 +08:00
反向思考一下,关系型数据库做不到合并单元格,但可以“拆分”单元格啊。
用户 1, {"1 子用户", "1 子用户", "1 子用户"}
用户 2, {"2 子用户", "2 子用户", "2 子用户"}
返回这么两行就行了。/手动狗头
WhereverYouGo
2022-01-13 14:18:09 +08:00
row_number() over(partition by xxx) ?
wunonglin
2022-01-13 14:57:49 +08:00
这个是展示端的功能,和数据库有毛线关系
final7genesis
2022-01-13 14:59:39 +08:00
让前端去搞, 前 n 列相同的自动合并
Kilerd
2022-01-13 15:03:26 +08:00
合并单元格应该做不到吧,但是可以 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