如何在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')
;

您似乎在基于特定用户的子查询中比较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);

最新更新