我有一个用户应用程序;用户可以创建书签,每个书签可以有多个标签。
所以,如果我没记错的话:user =* bookmark *=* tag
现在我尝试使用带有他们使用的标签的 JSON 数组检索所有用户。我需要一个 JSON 数组,因为我可能需要从标签或书签中检索名称或其他数据:
SELECT
`user`.id,
JSON_ARRAYAGG(
JSON_OBJECT(
"id", tag.id
)
) AS tags,
JSON_ARRAYAGG(
JSON_OBJECT(
"id", bookmark.id
)
) AS bookmarks
FROM tag
INNER JOIN bookmark_tag ON bookmark_tag.tag_id = tag.id
INNER JOIN bookmark ON bookmark.id = bookmark_tag.bookmark_id
INNER JOIN `user` ON user.id = bookmark.user_id
GROUP BY `user`.id;
但这会为书签和标签返回重复的 id:
这是一个可以玩的数据库小提琴:https ://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=56ac0313fe2a3bf7af32a3ed9a3ea78a
我怎样才能做到这一点?