我有两个 select 语句,从两个不同的表中查询
select count(1) from ACCOUNTS WHERE CUSTOMER_ID=100206 HAVING COUNT (*) = 0
select ATTEMPTED from DISC_NATURE WHERE CUSTOMER_ID=100206 AND ATTEMPTED='NO';
想要在单个验证中组合两个选择语句。仅当 ACCOUNTS 表为空且 ATTEMPTED=NO
时,验证才会为 TRUE使用
CROSS JOIN
:
SELECT *
FROM ( select count(1) AS num_accounts
from ACCOUNTS
WHERE CUSTOMER_ID=100206
HAVING COUNT (*) = 0 ) a
CROSS JOIN
( select ATTEMPTED
from DISC_NATURE WHERE CUSTOMER_ID=100206
AND ATTEMPTED='NO' ) d;
那么,只有在没有帐户且没有尝试的情况下,您才会得到输出。
或者使用
CASE
表达式:
SELECT CASE
WHEN NOT EXISTS (
SELECT 1
FROM accounts
WHERE CUSTOMER_ID=100206
)
AND EXISTS (
select 1
from DISC_NATURE WHERE CUSTOMER_ID=100206
AND ATTEMPTED='NO'
)
THEN 'No account and no attempt'
ELSE 'Either account or attempt'
END AS has_account_attempt
FROM DUAL;
您将始终获得 1 行结果描述。