我有两张表,如下所示
我想要取CPU_ID
& LOGIN_NAME
来自第二个表格,基于OPABC_JOB_NAME
,JOB_NAME
,OPABC_CYCLE_KEY
,CYCLE_KEY
和OPABC_JOB_REC
,因为某些循环密钥为{ {1}}我的值不正确。
NULL
答案 0 :(得分:2)
也许您可以在匹配NVL
时使用CYCLE_KEY
函数,这在两个表中都很常见。
SELECT DISTINCT OPABC_JOB_NAME,
JOB_NAME,
OPABC_CYCLE_KEY,
CYCLE_KEY,
OPABC_JOB_REC,
CPU_ID,
LOGIN_NAME
FROM OPHOST OH, OPABC OB
WHERE NVL(OH.CYCLE_KEY, 0) = NVL(OB.OPABC_CYCLE_KEY, 0)
这种方式遇到NULL
CYCLE_KEY
时,将返回0,您将获得16行。
答案 1 :(得分:0)
对于ORACLE:
SELECT cpu_id, login_name
FROM OPHOST
WHERE (job_name, nvl(cycle_key, -1)) in (
SELECT OPABC_JOB_NAME, nvl(OPABC_CYCLE_KEY, -1) FROM OPABC);
对于MySQL:
SELECT cpu_id, login_name
FROM OPHOST
LEFT JOIN OPABC ON job_name = OPABC_JOB_NAME
AND coalesce(cycle_key, -1) = coalesce(OPABC_CYCLE_KEY, -1);