我想要做的是合并具有相同值但在不同列中的行并將它們顯示在一行中
我嘗試使用 JSON_ARRAYAGG() 但沒有以我的方式得到結果
用戶資料
這里的次要用戶是primary_user的參考
| ID | 用戶名 | 次要用戶 | 代碼 |
|---|---|---|---|
| 1 | max_max | 空值 | 1356 |
| 2 | jac_jac | 1 | 1111 |
| 3 | leo_leo | 空值 | 2222 |
| 4 | 鮑勃鮑勃 | 3 | 4444 |
我想要的結果
| ID | 用戶名 | 次要用戶 | 代碼 | 次要用戶 |
|---|---|---|---|---|
| 1 | max_max | 空值 | 1356 | [{"jac_jac", "1111"}] |
| 3 | leo_leo | 空值 | 2222 | [{"bob_bob", "4444"}] |
uj5u.com熱心網友回復:
首先,您需要表的自聯接。
然后用于以and notJSON_OBJECT()的形式為用戶創建有效的 json 物件,最后聚合并使用:{"user_name": "user_code"}{"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是表的主鍵。
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/460575.html
