我使用DB2。
情况:我想对我的表RELATIONS进行查询,列出所有分配了RELATION 1和RELATION 2 OR 3的公司。在我的数据库设计中,1个或更多公司可以有多个关系。
答案 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;