我需要从表1中选择一些行,如果在表2中找到一个值,那么我想检查表2中是否找到了值(我将从命令行输入值),然后选择行从Table1,如果不是我想从另一个表中选择行。 我试过CASE但是从我得到的只有当你想在一个表中检查值时才有效。有什么想法吗?
答案 0 :(得分:6)
您可以这样做:
-- If value is found in table2, select from table1
select * -- <- use padding if necessary
from table1
where exists (select 1
from table2
where myField = value)
union all
-- If value is not found in table2, select from another_Table
select * -- <- use padding if necessary
from another_Table
where not exists (select 1
from table2
where myField = value)
答案 1 :(得分:1)
如果Table1
中存在:id
,则此查询将从Table3
中选择,否则将从Table2
中选择:
select *
from Table1
where exists
(
select *
from Table3
where id = :id
)
union all
select *
from Table2
where not exists
(
select *
from Table3
where id = :id
)