在同一列上使用多个AND运算符的select语句

时间:2017-09-09 16:44:37

标签: sql select

我使用DB2。

情况:我想对我的表RELATIONS进行查询,列出所有分配了RELATION 1和RELATION 2 OR 3的公司。在我的数据库设计中,1个或更多公司可以有多个关系。

2 个答案:

答案 0 :(得分:0)

尝试以下查询

SELECT * from RELATIONS
WHERE COMPANY_ID = 2245
AND RELATION_ID in (4,5,6)

答案 1 :(得分:0)

你可以。但是这个动作毫无意义,因为你不能有一行列是" 4"以及" 5" /" 6"。如果您正在寻找其中任何一个,那么您只需将该值添加到in列表中:

SELECT *
FROM RELATIONS
WHERE COMPANY_ID = 2245 AND RELATION_ID IN (4, 5, 6);

但那不是你想要的。您希望从不同的行获取值。一种方法使用聚合:

select company_id
from relations r
where relation_id in (4, 5, 6)
group by company_id
having sum(case when relation_id = 4 then 1 else 0 end) > 0 and
       sum(case when relation_id in (5, 6) then 1 else 0 end) > 0;