假设您有一个数据库表作为另外两个之间的链接。在这种情况下,书和标签之间的链接,例如“小说”或“园艺”。如果我们有以下数据集:
Book_id | tag_id
----------------
1 | 13
1 | 43
1 | 15
2 | 13
2 | 25
您会说什么样的查询“只查找与标签13,43和15有链接的图书”?也就是说,您添加的标签越多,数字越小所显示的书籍。
我希望这是有道理的。提前感谢您的时间和帮助!!
答案 0 :(得分:1)
试试这个
SELECT
Book_id
FROM
book_tags
GROUP BY
Book_id
HAVING
SUM( CASE WHEN tag_id IN (13, 43, 15) THEN 1 END ) >= 3
您只需要包含标记13, 43, 15
(所有标记)的图书,它会为您的结果返回book_id = 1
。 SUM() >= 3
指定您要搜索的代码总数,在本例中为3
,即13, 43, 15
答案 1 :(得分:0)
如果我正确理解你的问题......就像这样:
SELECT `Book_id` FROM `table` WHERE `tag_id` IN (13,43,25) LIMIT 0, 10;
答案 2 :(得分:0)
select book_table.* from book_table, link_table where book_table.id = link_table.book_id and link_table.tag_id in (13, 43, 15)
如果您的书籍有单独的表格..