调查表:

问题表:

我的sql查询:

选择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相关问答推荐

基于 2 列的重复行的 SQL 查询

Golang Gorm没有从关联表中检索数据

估计行数 SQL

为什么在有 BEGIN 和 END 时为存储过程指定分隔符?

如何使用 sequelize 将复合主键放在连接表中?

MySQL查询根据同一表中其他字段的值更新表中的字段

如何在 SQL 的计算列中显示小数点后两位?

如何使用nodejs从mysql数据库中获取最新的10条记录?

sql sum - 处理连接表中的脏重复项

将 MySQL 中的 JSON 数组转换为行

LEFT JOIN 仅第一行

不支持身份验证插件“caching_sha2_password”

MySQL 8.0 上的 phpMyAdmin

如何在 MySQL 中进行正则表达式替换?

ER_NOT_SUPPORTED_AUTH_MODE - MySQL 服务器

Sequelize Query 查找日期范围内的所有记录

用于 UNIX 套接字文件的 mysqld_safe 目录“/var/run/mysqld”不存在

使用 mysql 处理非常大的数据

如何关闭mysql密码验证?

服务器时区值“AEST”无法识别或代表多个时区