我正在尝试将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”附近使用正确的语法
答案 0 :(得分:0)
您可以使用JSON_OBJECT()
在MySQL中生成有效的json。
例如,这将为名为user_name
的列中的键为course_title
,member_role
和js
的每一行生成一个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
);