You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL联结表中查询同时拥有指定标签的书籍ID

问题:找出同时拥有多个指定标签的书籍

背景信息

我有一张联结表book_tags,建表语句如下:

CREATE TABLE `book_tags` ( `id` int(11) NOT NULL, `book_id` int(11) DEFAULT NULL, `tag_id` int(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

表中数据示例:

INSERT INTO `book_tags` (`id`, `book_id`, `tag_id`) VALUES (3, 20, 1), (4, 20, 2), (5, 21, 1), (6, 22, 2), (7, 24, 2);

我想知道如何找出同时拥有两个或多个指定标签的书籍(book_id)?比如,如何查询同时拥有tag_id=1和tag_id=2的书籍?


解决方案

我在Stack Exchange上找到了对应的解决办法,针对需要匹配2个标签的场景,可以使用以下SQL语句:

SELECT book_id FROM `book_tags` WHERE `tag_id` IN (1, 2) GROUP BY book_id HAVING COUNT(*) = 2

适用说明

因为我确认表中不存在book_id与tag_id重复的行(即同一本书不会被标记同一个标签多次),所以这个方案完全适用。

感谢@Barbaros Özhan和@scaisEdge的帮助!


内容的提问来源于stack exchange,提问作者oshka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:23:46