gpt4 book ai didi

MYSQL:从一列中选择具有多个值的查询

转载 作者:行者123 更新时间:2023-11-29 15:44:47 24 4
gpt4 key购买 nike

我目前正在使用一个 MYSQL 数据库,该数据库包含三个表:书籍、关键字和关键字分配。

表 Books 和 keywords 处于多对多关系,因此表 KeywordAssignment。

Database structure

现在回答我的问题:我想搜索一本包含多个(最多:最多十个)关键字的书。

我已经尝试过自加入:

SELECT BookID 
FROM Keywords K1 INNER JOIN
Keywords K2
ON K1.KeywordAssignmentID=K2.KeywordAssignmentID INNER JOIN
KeywordAssignment
ON KeywordAssignment.KeywordAssignmentID=K1.KeywordAssignmentID INNER JOIN
Books
ON KeywordAssignment.BookID=Books.BookID
WHERE K1.Keyword='Magic' AND K2.Keyword='Fantasy'

问题是只有给定的关键字顺序正确时它才有效。如果没有,则有不止一个。

非常感谢您的帮助,非常感谢!

最佳答案

您需要 GROUP BY BookIDHAVING 子句,条件是这两个关键字都链接到该 BookID:

SELECT b.BookID, b.Title 
FROM Books b
INNER JOIN KeywordAssignment ka ON ka.BookID = b.BookID
INNER JOIN Keyword k ON k.KeywordID = ka.KeywordID
WHERE k.Keyword IN ('Magic', 'Fantasy')
GROUP BY b.BookID, b.Title
HAVING COUNT(DISTINCT k.Keyword) = 2

此代码将返回链接到'Magic''Fantasy'的图书。
如果您想要这 2 个关键字中的任何一个,请删除 HAVING 子句。

关于MYSQL:从一列中选择具有多个值的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57191193/

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