簡體   English   中英

將聚合多行的 MySQL 表轉換為 JSON 對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM