[英]convert MySQL table aggregating multiple rows into JSON object
我正在嘗試轉換一個表,我想將多行聚合到一個 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”,但我不知道為什么。
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.