首页 > 解决方案 > 如何将Oracle SQL中具有相同值的多个列与OR进行比较

问题描述

我有以下查询,我将多个列与相同的子查询进行多次比较。有没有办法只调用一个子查询与多列进行比较。我知道AND是可能的,但OR是否可能。

select * from catalog 
where 
APPROVER_USER=(select usr_key from usr where usr_login='abcd')
or CERTIFIER_USER =(select usr_key from usr where usr_login='abcd')
or FULFILLMENT_USER =(select usr_key from usr where usr_login='abcd')
;



标签: sqloracleoracle11g

解决方案


您似乎正在user_key根据特定用户在子查询中进行比较。似乎根本不需要这张usr桌子:

select c.*
from catalog c
where 437391 in (c.APPROVER_USER, c.CERTIFIER_USER, c.FULFILLMENT_USER);

编辑:

对于修改后的问题,我建议join

select c.*
from catalog c join
     users u
     on u.usr_login = ? and
        u.user_key in (c.APPROVER_USER, c.CERTIFIER_USER, c.FULFILLMENT_USER);

推荐阅读