oracle sql中的AND和OR
我需要写一些东西,比如:oracle sql中的AND和OR,sql,oracle,Sql,Oracle,我需要写一些东西,比如: select * from HR_EMP_TRANSFER t1, HR_EMP_PROFILE_MSTR_TT t2 where (t1.APPROVAL_STATUS='P' and t1.EMPNO = '13724') OR (t2.APPROVAL_STATUS='P' and t2.EMPNO = '13724') 但目前,它并没有给我的结果只有EMPNO13724 这两个表具有不同的表结构。但这两列是相同的。我只需要将这两个查询组合起来,并检查
select *
from HR_EMP_TRANSFER t1, HR_EMP_PROFILE_MSTR_TT t2
where (t1.APPROVAL_STATUS='P' and t1.EMPNO = '13724')
OR (t2.APPROVAL_STATUS='P' and t2.EMPNO = '13724')
但目前,它并没有给我的结果只有EMPNO13724
这两个表具有不同的表结构。但这两列是相同的。我只需要将这两个查询组合起来,并检查它们是否返回任何值
select * from HR_EMP_TRANSFER t1 where t1.APPROVAL_STATUS='P' and t1.EMPNO = '13724'
select * from HR_EMP_PROFILE_MSTR_TT t2 where t2.APPROVAL_STATUS='P' and t2.EMPNO = '13724'
您可能需要
全部联合:
SELECT t1.*
FROM HR_EMP_TRANSFER t1
WHERE t1.APPROVAL_STATUS='P' and t1.EMPNO = '13724'
UNION ALL
SELECT t2.*
FROM HR_EMP_PROFILE_MSTR_TT t2
WHERE t2.APPROVAL_STATUS='P' and t2.EMPNO = '13724';
这假设两个表具有相同的结构(相同的列、相同的顺序、相同的类型)。它以单独的行而不是一行返回记录。您可以使用完全外部联接:
SELECT *
FROM HR_EMP_TRANSFER t1
FULL OUTER JOIN
HR_EMP_PROFILE_MSTR_TT t2
ON ( t1.APPROVAL_STATUS = t2.APPROVAL_STATUS
AND t1.EMPNO = t2.EMPNO )
WHERE (t1.APPROVAL_STATUS='P' and t1.EMPNO = '13724')
OR (t2.APPROVAL_STATUS='P' and t2.EMPNO = '13724')
您可以通过使用SQLJOIN来实现这一点
select * from HR_EMP_TRANSFER t1
inner join HR_EMP_PROFILE_MSTR_TT t2 on t1.APPROVAL_STATUS = t2.APPROVAL_STATUS and t1.EMPNO = t2.EMPNO
where t1.EMPNO = 13724 and t1.APPROVAL_STATUS='P'
没有连接条件?也许您应该改为使用UNION ALL?我想您可能会遇到一个编辑问题并提供示例数据和所需结果的问题。@user2093576如果您只对“是否存在任何行”感兴趣,请不要选择“t1.*”,而选择“t1.EMPNO”(对于t2也是如此)