如何将SQL查询转换为JSON格式

时间:2019-11-19 21:49:21

标签: mysql sql json

我正在尝试将SQL结果转换为JSON格式,但显示错误。

SQL查询:

 SELECT 
    User.name, 
    Course.title, 
    Member.role 
FROM User 
JOIN Member JOIN Course 
    ON User.user_id = Member.user_id 
    AND Member.course_id = Course.course_id 
ORDER BY 
    Course.title, 
    Member.role DESC, 
    User.name;

我也尝试过FOR JSON PATH和FOR JSON AUTO,但是出现以下错误:

  

错误1064(42000):您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以在第1行的“ for JSON AUTO”附近使用正确的语法

1 个答案:

答案 0 :(得分:0)

您可以使用JSON_OBJECT()在MySQL中生成有效的json。

例如,这将为名为user_name的列中的键为course_titlemember_rolejs的每一行生成一个json对象:

SELECT JSON_OBJECT(
    'user_name', User.name, 
    'course_title', Course.title, 
    'member_role', Member.role 
) as js
FROM User 
JOIN Member JOIN Course 
    ON User.user_id = Member.user_id 
    AND Member.course_id = Course.course_id 
ORDER BY 
    Course.title, 
    Member.role DESC, 
    User.name;

如果您想要一个由单行和单列组成的结果集,其中所有对象都聚集在一个数组中,则可以在JSON_ARRAYAGG上使用JSON_OBJECT()

SELECT JSON_ARRAYAGG(js) js_array
FROM (
    SELECT JSON_OBJECT(
        'user_name', User.name, 
        'course_title', Course.title, 
        'member_role', Member.role 
    ) as js
    FROM User 
    JOIN Member JOIN Course 
        ON User.user_id = Member.user_id 
        AND Member.course_id = Course.course_id 
    ORDER BY 
        Course.title, 
        Member.role DESC, 
        User.name
);