mysql return 嵌套数组
mysql return nested array
我有这个SQL
SELECT
U.id,
U.first_name,
hobby.id,
hobby.name
FROM
USER AS U
INNER JOIN user_hobbies AS UH
ON
UH.user_id = U.id
INNER JOIN hobby ON hobby.id = user_hobbies.hobby_id FOR JSON AUTO
我正在尝试 运行 在 xampp PHP myadmin 中,但出现错误
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'JSON AUTO' at line 11
即使在 SQL 输入中,FOR JSON AUTO
也被标记为红色 任何人都可以帮助解决如何进行这样的内部连接,return 内部数组
FOR JSON AUTO
是 SQL 服务器语法,在 MySQL 中不受支持。如果您希望为每个用户生成一行,以及一个 JSON 爱好对象数组,您可以像这样使用 JSON 聚合:
select u.id, u.first_name,
json_arrayagg(json_object('id', h.id, 'name', h.name)) as hobbies
from users u
inner join user_hobbies uh on h.user_id = u.id
inner join hobbies h on h.id = uh.hobby_id
group by u.id
请注意,这需要 MariaDB 10.5.0 或更高版本。
我有这个SQL
SELECT
U.id,
U.first_name,
hobby.id,
hobby.name
FROM
USER AS U
INNER JOIN user_hobbies AS UH
ON
UH.user_id = U.id
INNER JOIN hobby ON hobby.id = user_hobbies.hobby_id FOR JSON AUTO
我正在尝试 运行 在 xampp PHP myadmin 中,但出现错误
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'JSON AUTO' at line 11
即使在 SQL 输入中,FOR JSON AUTO
也被标记为红色 任何人都可以帮助解决如何进行这样的内部连接,return 内部数组
FOR JSON AUTO
是 SQL 服务器语法,在 MySQL 中不受支持。如果您希望为每个用户生成一行,以及一个 JSON 爱好对象数组,您可以像这样使用 JSON 聚合:
select u.id, u.first_name,
json_arrayagg(json_object('id', h.id, 'name', h.name)) as hobbies
from users u
inner join user_hobbies uh on h.user_id = u.id
inner join hobbies h on h.id = uh.hobby_id
group by u.id
请注意,这需要 MariaDB 10.5.0 或更高版本。