我正在嘗試轉換一個表,我想將多行聚合到一個 JSON 列中。舊表有一個由多列組成的主鍵,A 和 B 兩列。A 應該成為新表中的欄位名,B 應該是值。
到目前為止,這是我的查詢:
INSERT INTO new_table (pk1, pk2, pk3, json_column)
SELECT DISTINCT pk1,
pk2,
pk3,
JSON_INSERT(SELECT JSON_ARRAYAGG(JSON_OBJECT(A, B)) from old_table
WHERE
pk1 = old.pk1 AND pk2 = old.pk2 AND pk3 = old.pk3)
FROM old_table AS old;
我的 IDE 告訴我,無法在 JSON_INSERT-Statement 中決議“old_table”,但我不知道為什么。
uj5u.com熱心網友回復:
JSON_INSERT其實就是將json插入jsons的方式,但是你不需要,所以略過。
但是,如果您這樣做,您的查詢將是正確的
INSERT INTO new_table (pk1, pk2, pk3, json_column)
SELECT DISTINCT pk1,
pk2,
pk3,
JSON_INSERT((SELECT JSON_ARRAYAGG(JSON_OBJECT(A, B)) from old_table
WHERE
pk1 = old.pk1 AND pk2 = old.pk2 AND pk3 = old.pk3))
FROM old_table AS old;
但實際上你只需要
INSERT INTO new_table (pk1, pk2, pk3, json_column)
SELECT DISTINCT pk1,
pk2,
pk3,
(SELECT JSON_ARRAYAGG(JSON_OBJECT(A, B)) from old_table
WHERE
pk1 = old.pk1 AND pk2 = old.pk2 AND pk3 = old.pk3)
FROM old_table AS old;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/496295.html
