我有一个以下查询:
select count(*)
from propertyattributelink as p
where p.attributeId IN (40,41,45,52);
它返回列出的属性属性的所有记录(40或41或45或52)。
我只需要具有 all 属性的记录(40和41和45和52)
注意:列表大小未固定。这里的大小为4,可能是10或15,它可以根据用户选择具有动态值。
任何人都可以建议如何获得正确的结果吗?
您需要在此处使用聚合以检查所有属性的当前。在下面的查询中,我假设id
是要分组的propertyattributelink
表中的列。
SELECT t1.*
FROM propertyattributelink t1
INNER JOIN
(
SELECT id
FROM propertyattributelink
WHERE attributeId IN (40, 41, 45, 52)
GROUP BY id
HAVING COUNT(DISTINCT attributeId) = 4
) t2
ON t1.id = t2.id