[英]Return a SELECT match where two rows match with different column values
我有一个包含以下各列的表格
drug_id | image_filename | cat_id | desc_id | drug_name
--------|----------------|--------|---------|--------
3 picx.jpg 3 6 bla1
3 picy.jpg 3 6 bla2 <
3 picy.jpg 5 3 bla2 < match!
3 picz.jpg 3 6 bla2
5 pixx.jpg 5 3 bla3
我需要一个查询,该查询返回所有唯一的drug_name,其中drug_id相同,image_filename匹配,并且AND cat_id = 3 AND desc_id = 6 AND cat_id = 5 AND desc_id = 3。
换句话说,我需要一些count(*)=2
GROUP BY逻辑,但是由于我需要某些列条件来与匹配项不同,因此我尝试执行的所有操作都不起作用。
现在,我返回所有排序的行,并使用seq逻辑和计数器检查条件以及所有无用的内容,我真的很希望找到一个可以在SQL中完成所有操作的查询。
一种简单的方法是将聚合与having
子句一起使用:
select drug_name, drug_id, image_filename
from t
group by drug_name, drug_id, image_filename
having sum(cat_id = 3 and desc_id = 6) > 0 and
sum(cat_id = 5 and desc_id = 5) > 0;
Haven子句中的每个条件都会检查是否存在值的组合之一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.