调查表:

问题表:

我的sql查询:

Select s.id,q.question

我的结果是:

[
    {
        "id": 5,
        "question": "Which industry are you working at?"
    },
    {
        "id": 5,
        "question": "What is your company's highest annual revenue?"
    },
    {
        "id": 5,
        "question": "How long has your company been operated? updated"
    }
]

但我想要这个输出:

[
    {
        "id": 5,
        "questions": [
            "Which industry are you working at?",
            "What is your company's highest annual revenue?",
            "How long has your company been operated?"
        ]
    }
]  

enter image description here

推荐答案

你想要的是GROUP BY

SELECT 
  s.id, 
  JSON_ARRAYAGG(q.question)
FROM 
  questions q 
JOIN 
  surveys s ON q.surveyId = s.id;
GROUP BY
  s.id

这可能会非常接近你想要的,但是你需要MySQL 8.0.14或更高版本.看看JSON_ARRAYAGG().也可以使用其他聚合函数,但需要对结果进行一些处理.

不过,GROUP BY是必不可少的.

Mysql相关问答推荐

SQL不断返回查询失败,并且不知道从这里到哪里go

如何本地化 MySQL 表中的实体?

如何使用sql查询在日期列中按值和最大值分组的表中添加列?

在 MySQL 中使用非空条件 LAG() 函数

如何将结果列中的不同值按其他列sql中的值带入单行

当用它的别名替换 (MAX(s.salary) - MIN(s.salary) 它将不起作用.. 为什么?

组平SQL查询结果

使用数据表的直方图(SQL 查询)

按 SQL 删除分组前的重复项

查找同时玩过这两种游戏的玩家

在 MySQL 中转换 JSON 数组值

MariaDB 下的慢速更新、删除和插入查询

MySQL:低基数/ Select 性列=如何索引?

是否可以在 macOS 上只安装 mysqldump

按日期和时间降序排序?

ASP.NET EntityFramework 获取数据库名称

MySQL 中的 VARCHAR(255) 和 TINYTEXT 字符串类型有什么区别?

MySQL ORDER BY rand(),名称为 ASC

如何将 MySQL 查询结果存储在另一个表中?

如果另一列为空,则 Select 一列