返回SELECT匹配,其中两行匹配不同的列值

时间:2016-01-28 22:45:29

标签: mysql sql select

我有一个包含以下列的表

count(*)=2

我需要一个返回所有唯一的drug_name的查询,其中drug_id相同,image_filename匹配,AND cat_id = 3 AND desc_id = 6 AND cat_id = 5 AND desc_id = 3.

换句话说,我需要一些带有socket.io-redis的GROUP BY逻辑,但由于我需要某些列条件对于匹配不同,所以无论我尝试什么都不起作用。

现在,我返回所有已排序的行并使用seq逻辑和计数器来检查条件和所有废话,我真的希望找到一个可以在SQL中完成所有操作的查询。

1 个答案:

答案 0 :(得分:2)

一种简单的方法是使用带有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;

having子句中的每个条件都会检查是否存在其中一个值组合。