我想基于完全匹配的Attribute_Ids数组选择一个Product_Id 。例如,如果我查询的Attribute_Ids为9、4和2,我希望查询返回的Product_Id为1。但是,如果我查询的9和4,则我不希望返回任何东西。我该怎么做?
Attribute_Id | Product_Id
9 | 1
4 | 1
2 | 1
9 | 2
5 | 2
9 | 3
6 | 3
9 | 4
7 | 4
现在,我能够根据先前的问题返回模糊匹配。您将如何修改它以获得完全匹配?SQL查询根据另一列中的唯一元素在列中查找公共ID
select Product_Id
from table t
where Attribute_Id in (9, 5)
group by Product_Id
having count(*) = 2;
试试这个:
SELECT Product_Id
FROM table
GROUP BY Product_Id
HAVING COUNT(DISTINCT CASE WHEN Attribute_Id IN (9, 5) THEN Attribute_Id END) = 2 AND
COUNT(CASE WHEN Attribute_Id NOT IN (9, 5) THEN 1 END) = 0
上述查询返回的那些Product_Id
相关值都 Attribute_Id
值9和5以及相关的任何其他不Attribute_Id
值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句