mysql - Json_Array 与 Group_Concat 不给出单个字符串数组

标签 mysql

我们有 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/

相关文章:

mysql - 如何从表中选择每小时计数,包括缺失的小时数?

mysql - 在 MySQL 中的子查询上使用 GROUP_CONCAT

java - sql上相同参数的多个值

mysql - 您将如何解决CPU负载异常高的MySQL服务器的问题?

mysql - 多次引用mysql中的表中的主键

mysql - ec2 快照是否在执行之前等待 mysql 查询完成?

mysql - Sphnix index_exact_words 不忽略停用词

mysql - Sequelize 包含扩展外键的相关模型

java - 为什么 JPA/hibernate 不能映射到 MySQL blob 类型?

mysql - 对派生表的结果进行分组连接