SQL是否在Join语句中允许某种形式的条件“表选择”?即。根据预定义的变量/条件选择其他表进行联接。
define var = 1
select *
from tbl
join (case when &var=1 then tblA when &var=2 then tblB else tblC end) a on tbl.id = a.id
尝试此方法时遇到的错误是 ORA-00905:缺少关键字。
答案 0 :(得分:6)
不。除非您使用动态SQL,否则SQL和Oracle都不允许这样做。
假设表具有相同的列,则可以将逻辑编写为:
browser = webdriver.Firefox(
service_log_path="C:\\Users\\[username]\\AppData\\Local\\Temp\\geckodriver.log"
)
答案 1 :(得分:0)
您仍然需要提前指定所有联接,并且必须将它们保留为外部联接,但是您可以像这样重写语句。不管每个表中的字段数如何(联合要求),这种方法都将起作用,并且如果它们的名称不同,则可以按名称访问相应的字段。
DECLARE @var int
SET @var=1
select tbl.*, tblA.ShippingName, tblB.BillingName, tblC.OtherName
from tbl
left outer join tblA on tbl.id = tblA.id and @var = 1
left outer join tblB on tbl.id = tblB.id and @var = 2
left outer join tblC on tbl.id = tblC.id and @var = 3