gpt4 book ai didi

mysql - 用于显示所有其他类别一对多关系的子查询

转载 作者:行者123 更新时间:2023-11-29 14:48:11 25 4
gpt4 key购买 nike

我正在尝试创建一个查询,在该查询中我可以查看类别 1 和类别 2 中的所有书籍(例如恐怖小说和小说),但也可以显示该书所属的类别。我该怎么办?我只能假设我需要一个递归子查询,但这可能效率低下。

SELECT book.bookid,
book.author,
book.title,
Group_concat(DISTINCT category.categorydesc)
FROM book,
bookscategories,
category
WHERE book.bookid = bookscategories.bookid
AND bookscategories.categoryid = category.categoryid
AND category.categoryid = 1
AND category.categoryid = 2
GROUP BY book.bookid;

最佳答案

select b.bookid, b.author, b.title, group_concat(distinct c.categorydesc)
from book as b
inner join bookcategories as bc on b.bookid = bc.bookid
inner join categories as c on bc.categoryid = c.categoryid
where b.bookid in (select bc1.bookid
from bookcategories as bc1
inner join bookcategories as bc2 on bc1.bookid = bc2.bookid
where bc1.categoryid = 1 and bc2.categoryid = 2)
group by b.bookid;

我不确定此查询的性能,因为它使用了 bookcategories 表 3 次。

选择 b.author 和 b.title 在技术上并不正确,但在这种情况下应该有效,因为 b.bookid 可能是唯一的。否则,不可能选择既不属于 group by 子句也不用于聚合函数的内容。

我相信您发布的代码将始终返回空结果集,因为您将category.categoryid限制为同时为1和2。

关于mysql - 用于显示所有其他类别一对多关系的子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6403680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com