MySQL行具有相同的值,但在不同的列中&一行显示

发布于 2025-01-23 09:47:48 字数 995 浏览 0 评论 0原文

我想做的是合并具有相同值但在不同列中的行& 我尝试使用JSON_ARRAYAGG()在一行中显示它们,

但没有以我的方式获得结果

用户数据

此次级用户是primary_user

ID用户名sectername seconser_usercode
1max_maxnull1356
2jac_jac11111
3leo_leonull2222
4bob_bob34444

结果我想要

id用户名seconser_usercodesecondary_users
1max_maxnull1356[{“ jac_jac”,“ jac_jac”,“ 1111”}]
3leo_leo_leonull null null22222[ ,“ 4444”}]]

What I want to do is merge the rows which have same values but in different column & Show them in a single row

I Tried to use the JSON_ARRAYAGG() but didn't get the results in my way

User Data

Here secondary user is the reference of primary_user

idusernamesecondary_usercode
1max_maxnull1356
2jac_jac11111
3leo_leonull2222
4bob_bob34444

Result I want

idusernamesecondary_usercodesecondary_users
1max_maxnull1356[{"jac_jac", "1111"}]
3leo_leonull2222[{"bob_bob", "4444"}]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

绮筵 2025-01-30 09:47:48

首先,您需要桌子的自我加入。
然后使用json_object(){“ user_name”:“ user_code”}和不{“ user_name”,“ user_name”, “ user_code”},最后汇总并使用json_arrayagg()

SELECT t1.*,
       JSON_ARRAYAGG(JSON_OBJECT(t2.username, t2.code)) secondary_users
FROM tablename t1 LEFT JOIN tablename t2
ON t2.secondary_user = t1.id
WHERE t1.secondary_user IS NULL
GROUP BY t1.id;

我假设id是表的主要键。

请参阅

First you need a self join of the table.
Then use JSON_OBJECT() to create valid json objects for a user in the form of {"user_name": "user_code"} and not {"user_name", "user_code"} and finally aggregate and use JSON_ARRAYAGG():

SELECT t1.*,
       JSON_ARRAYAGG(JSON_OBJECT(t2.username, t2.code)) secondary_users
FROM tablename t1 LEFT JOIN tablename t2
ON t2.secondary_user = t1.id
WHERE t1.secondary_user IS NULL
GROUP BY t1.id;

I assume that id is the primary key of the table.

See the demo.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文