[英]How to convert SQL Query to JSON format
I am trying to convert my SQL result into JSON format it's showing an error.我正在尝试将我的 SQL 结果转换为 JSON 格式,它显示错误。
SQL Query: 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;
I have also tried FOR JSON PATH and FOR JSON AUTO but the following error is coming:我也尝试过 FOR JSON PATH 和 FOR JSON AUTO 但出现以下错误:
ERROR 1064 (42000): You have an error in your SQL syntax;
错误 1064 (42000):您的 SQL 语法有错误; check the manual that corresponds to your MySQL server version for the right syntax to use near 'for JSON AUTO' at line 1
检查与您的 MySQL 服务器版本相对应的手册,以了解在第 1 行的“for JSON AUTO”附近使用的正确语法
You can use JSON_OBJECT()
to generate valid json in MySQL.您可以使用
JSON_OBJECT()
在 MySQL 中生成有效的 json。
For example, this would generate a json object for each row, with keys user_name
, course_title
and member_role
, in a column called js
:例如,这将为每一行生成一个 json object,键为
user_name
, course_title
和member_role
,在名为js
的列中:
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;
If you want a resultset made of a single row and a single column where all objects are aggregated in an array, you can use JSON_ARRAYAGG
on top of JSON_OBJECT()
:如果您想要一个由单行和单列组成的结果集,其中所有对象都聚合在一个数组中,您可以在
JSON_OBJECT()
之上使用JSON_ARRAYAGG
:
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
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.