PostgreSQL组中的多个表达式?

时间:2015-02-09 06:09:13

标签: sql postgresql

假设我有一张桌子product_tag

product_id | tag_id
-----------+-------
123        | 100
123        | 101
124        | 100

我可以找到至少有一个这样的标签的所有产品:

SELECT DISTINCT product_id
FROM product_tag
WHERE tag_id IN (100, 101)

但如果我只想要包含所有标签的产品,我需要添加更多连接:

SELECT DISTINCT product_id
FROM product_tag pt1, product_tag pt2
WHERE pt1.tag_id = 100 AND pt2.tag_id = 101

如果有很多标签,这会非常痛苦。所以我正在使用它:

SELECT product_id
FROM product_tag
WHERE tag_id IN (100, 101)
GROUP BY product_id
HAVING count(*) = 2

这样写起来更友好,但对查询规划器并不友好。在SQL中是否有适当的方式来执行此操作?

0 个答案:

没有答案