[英]SQL query to get matching records with the given collection elements(all elements should match) need with AND not OR
我有以下查询:
select count(*)
from propertyattributelink as p
where p.attributeId IN (40,41,45,52);
它返回所有具有任何所列出的属性Id的(40或41或45或52)的记录。
我只需要具有所有属性的记录(40 AND 41 AND 45 AND 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.