3

我目前使用的软件在 SQL 表中存在对象和标签之间的关系,如下所示:

+-----------+--------+
| object_id | tag_id |
+-----------+--------+
|       226 |     31 |
|       226 |     35 |
|       313 |     31 |
|       312 |     35 |
+-----------+--------+

使用逻辑 OR 获取标签 ID 列表的所有对象 ID 可以使用以下请求:

select distinct object_id from tags_link where tag_id in (31, 35);

如何获得具有逻辑 AND 的标签 ID 列表的所有对象 ID?

对于上表,对标签 id 31 和 35 的请求应该只返回 object_id 226。

4

2 回答 2

5
select object_id
from tags_link
where tag_id in (31,35)
group by object_id
having count(distinct tag_id) = 2
于 2012-12-11T07:26:08.437 回答
4
select   object_id from tags_link where tag_id = 31
intersect
select   object_id from tags_link where tag_id = 35
于 2012-12-11T07:29:42.590 回答