Как сравнить несколько столбцов с одинаковым значением в Oracle SQL с ИЛИ - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть запрос ниже, где я сравниваю несколько столбцов с одним и тем же подзапросом несколько раз. Есть ли способ вызвать только один подзапрос сравнить с несколькими столбцами. Я знаю, что это возможно для И , но возможно ли это для ИЛИ .

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')
;



1 Ответ

1 голос
/ 26 апреля 2020

Вы, похоже, сравниваете user_key в подзапросе на основе спецификатора c пользователя. Кажется, в таблице 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...