这有点难以解释,但是可以理解。我有一个图书数据库,其中有两个表格。
一个用于唯一图书关键字,即为每个关键字分配一个ID:
id |关键词
______ | ____________
k1 |戏剧
k2 |惊悚片
k3 |传
还有一种用于将图书ID与关键字ID匹配(即每本书的所有关键字):
book_id | keyword_id
__________ | _____________
b1 | 33
b2 | 11
b2 | 22
因此,基本上,书籍“ b1”具有关键字“传记”,书籍“ b2”具有关键字“惊悚片”和“传记”。
我的问题是:如果我有一个特定的图书ID(例如“ b2”),我是否可以找到数据库中其他图书,这些图书中至少有2个(或任何其他数字)与“ b2”匹配的关键字?因此,在此示例中,其他同时具有“ k1”和“ k2”作为关键字的书籍吗?这将是查找“相关书籍”的一种方式。
我欢迎任何帮助。如果您想对我的要求进行澄清,请告诉我!
最佳答案
是。实际上,您只需要第二个表。
select bk.book_id, count(*)
from BookKeywords bk join
BookKeywords bkb2
on bkb2.book_id = 'b2' and
bk.keyword_id = bkb2.keyword_id
group by bk.book_id
having count(*) >= 2;
如果需要匹配关键字的列表,可以添加
group_concat(bk.keyword_id)
。关于mysql - MySQL:与符合一定数量特征的行相交,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26208916/