我们有 2 张 table 。包含问题
的问题和包含该问题的可能答案
的答案。
我想收集所有问题,以便给定问题的所有答案都以数组的形式出现。
select Answers.question_Id as questionId,
group_concat(json_array(Answers.answer)) as answers
from Question
inner join Answers
on Question.id = Answers.question_Id
group by questionId
当我尝试上述查询时,我得到以下输出:
------------------------------------
questionId | answers
--------------------------
1 | ["1"],["2"],["3"],["4"]
------------------------------------
所以我尝试了以下查询:
select Answers.question_Id as questionId,
json_array(group_concat(Answers.answer)) as answers
from Question
inner join Answers
on Question.id = Answers.question_Id
group by questionId
我得到以下输出:
questionId | answers
--------------------------
1 | ["1,2,3,4"]
--------------------------
我正在寻找的是['1', '2', '3', '4']
任何建议什么是好方法。 我也尝试仅使用 group_concat 但它用逗号分隔输出 并且答案中很有可能含有逗号。 我一直在寻找一个简单的解决方案。
MySQL版本:5.7.19
最佳答案
如果您使用 MySQL 5.7.22
或更高版本,您可以使用 JSON_ARRAYAGG
功能:
SELECT
a.question_Id AS questionId,
JSON_ARRAYAGG(a.answer) AS answers
FROM Question q
INNER JOIN Answers a
ON q.id = q.question_Id
GROUP BY
a.question_Id
关于mysql - Json_Array 与 Group_Concat 不给出单个字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49448644/