Я думаю, что вы хотите exists
:
select case
when exists (select custId from customer where customerId=3425632456 and custPhone='5653663251')
then 1
when exists (select accountnumber from account where accountId=524526 and accountPhone='5653663251')
then 1
else 0
end res
from dual
Этот запрос всегда возвращает одну строку с одним столбцом с именем res
. Если какой-либо из подзапросов что-то возвращает, то res
имеет значение 1
, иначе 0
.
В качестве бонуса производительности за использование case
второй подзапрос не выполняется, если первый завершается успешно ( это называется оценкой короткого замыкания). Если ваши запросы занимают много времени, это может быть интересно; сначала поставьте менее дорогой запрос.
Если вы действительно хотите вернуть значения, это не так. Один из вариантов - union all
:
select custId from customer where customerId=3425632456 and custPhone='5653663251'
union all
select accountnumber from account where accountId=524526 and accountPhone='5653663251'
Обратите внимание, что, в отличие от первого запроса, это не гарантирует, что будет возвращена только одна строка. В зависимости от ваших данных, это может дать любое количество строк, включая 0. Для выравнивания типов данных вам может понадобиться дополнительное приведение.