gpt4 book ai didi

MySQL 合并来自多个 JSON 行的数组

转载 作者:行者123 更新时间:2023-12-05 02:44:57 25 4
gpt4 key购买 nike

我有一个包含 json 列的表,如下所示:

+----+------------+
| id | myfield |
+----+------------+
| 1 | ["1", "2"] |
| 2 | ["3", "2"] |
| 3 | ["2", "4"] |
+----+------------+

如何将 myfield 中的所有值合并到一个数组中?

我需要一个如下所示的结果:["1", "2", "3", "2", "2", "4"],甚至更好删除了重复项。

我尝试使用这个查询:SELECT JSON_ARRAYAGG(myfield) FROM json_test 但结果我得到:

[["1", "2"], ["3", "2"], ["2", "4"]]

我假设我需要结合函数 JSON_MERGE 进行查询。

最佳答案

这是一个解决方案,但它需要 MySQL 8.0 来处理 JSON_TABLE()功能:

SELECT GROUP_CONCAT(j.myvalue) AS flattened_values
FROM mytable, JSON_TABLE(
mytable.myfield, '$[*]' COLUMNS(myvalue INT PATH '$')
) AS j;

输出:

+------------------+
| flattened_values |
+------------------+
| 1,2,3,2,2,4 |
+------------------+

我实际上建议避免存储 JSON 数组。相反,以规范化的方式将多值数据存储在第二个表中。然后您可以在联接表上使用 GROUP_CONCAT()。

我还没有听说在 MySQL 中使用 JSON 并不能通过使用数据库规范化来更好地完成。

关于MySQL 合并来自多个 JSON 行的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66215056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com