繁体   English   中英

SQL查询获取与给定集合元素(所有元素都应匹配)匹配的记录,需要使用AND而不是OR

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM