我目前正在尝试从两个具有相同列的表中获取数据。两个表的主键“ID”的值可以存在于一个或两个表中。即使使用相同的主键,两个表中不同列中的值也可能不同。我的问题是我有一个ID testID,如何在我第一次检查table1时查询它是否存在。如果它存在于table1中,我使用table1中的详细信息,否则检查table2并使用table2中的详细信息(如果table2中存在)。
答案 0 :(得分:1)
可能的方法是使用FULL OUTER JOIN
IndexError
如果T1.ID / T2.ID不为NULL,则如果在相应的源表中定义了记录,则获取信息。
答案 1 :(得分:1)
使用FULL OUTER JOIN:
select
case when t1.id is not null then t1.field1 else t2.field1 end as field1,
case when t1.id is not null then t1.field2 else t2.field2 end as field2,
...
from table1 t1
full outer join table2 t2 on t2.id = t1.id
where t1.id = :testid or t2.id = :testid;
或UNION ALL与NOT EXISTS结合使用:
select field1, field2, ...
from table1
where id = :testid
union all
select field1, field2, ...
from table2
where id = :testid and not exists (select * from table1 where id = :testid);