MySQL查询:按标签过滤搜索结果

时间:2013-05-09 17:17:23

标签: mysql search

假设您有一个数据库表作为另外两个之间的链接。在这种情况下,书和标签之间的链接,例如“小说”或“园艺”。如果我们有以下数据集:

Book_id | tag_id
----------------
1       | 13
1       | 43
1       | 15
2       | 13
2       | 25

您会说什么样的查询“只查找与标签13,43和15有链接的图书”?也就是说,您添加的标签越多,数字越小所显示的书籍。

我希望这是有道理的。提前感谢您的时间和帮助!!

3 个答案:

答案 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 = 1SUM() >= 3指定您要搜索的代码总数,在本例中为3,即13, 43, 15

SQLFIDDLE

答案 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)

如果您的书籍有单独的表格..