SQL Oracle中是否有一种方法可以根据特定表中是否存在记录来有条件地在where子句中执行谓词。
示例
DataGridViewComboBoxColumn
当Table_C中不存在特定的公司ID时,不应将where子句中的这一部分视为执行。
SELECT * FROM TABLE_A a, TABLE_B b, TABLE_C c
WHERE a.personalID = B.personalId
and b.companyID = c.companyID
答案 0 :(得分:2)
切换到现代的,明确的JOIN
语法。
执行LEFT JOIN
处理“当Table_C中不存在特定公司ID时”。
SELECT *
FROM TABLE_A a
JOIN TABLE_B b ON a.personalID = B.personalId
LEFT JOIN TABLE_C c ON b.companyID = c.companyID
或者,保留古老的隐式连接并执行UNION ALL:
SELECT * FROM TABLE_A a, TABLE_B b, TABLE_C c
WHERE a.personalID = B.personalId
and b.companyID = c.companyID
UNION ALL
SELECT a.*, b.*, some null's
FROM TABLE_A a, TABLE_B b
WHERE a.personalID = B.personalId
AND NOT EXISTS (select 1 from TABLE_C c
where b.companyID = c.companyID)