SQL - 同一列上的不同条件

SQL - Different conditions on the same column

我正在尝试实现与

非常相似的东西

区别在于我想要两个单独的WHERE条件:

 WHERE tag_id IN (1,2)
 OR tag_id IN (3,2)
 GROUP BY other_id HAVING COUNT(tag_id) = 2

这为我提供了我需要的所有记录,而且还为我提供了具有标签 1 或 3 的记录,即使该记录没有 tag_id = 2。我知道我的问题出在 OR 条件下,因为如果我分别执行 (1,2)(3,2),我会得到每个查询的预期结果。

我错过了什么?

您可以使用:

SELECT other_id
FROM yourTable
GROUP BY other_id
HAVING COUNT(tag_id) = 2 AND              -- 2 tags
       (SUM(tag_id NOT IN (1, 2)) = 0 OR  -- either (1, 2)
        SUM(tag_id NOT IN (3, 2)) = 0);   -- or (3, 2)