Mysql:如何选择具有特定值的组?

htf*_*htf 6 mysql sql group-by having

说有这样的表:

mysql> SELECT * FROM tags;
+---------+--------+
| post_id | tag_id |
+---------+--------+
|       1 |      2 |
|       1 |      3 |
|       1 |      1 |
|       2 |      1 |
|       2 |      2 |
+---------+--------+
5 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

字段名称非常明显.我想选择post_id同时具有1和3的tag_ids,所以在这个例子中它只是1.我想到了 SELECT post_id FROM tags GROUP BY post_id HAVING ...以后我想列出tag_id这个组中的s.我怎么做?

rud*_*ore 9

如果post_id和tag_id都有唯一约束,那么它也应该有效:

SELECT post_id 
FROM tags 
WHERE tag_id = 1 OR tag_id = 3 
GROUP BY post_id 
HAVING count(DISTINCT tag_id) = 2;
Run Code Online (Sandbox Code Playgroud)

如果没有任何独特的约束,请尝试:

HAVING MIN(tag_id) <> MAX(tag_id)
Run Code Online (Sandbox Code Playgroud)