如果在另一个表中找到记录,请从表中选择

时间:2013-08-19 09:47:44

标签: mysql sql oracle oracle11g

我需要从表1中选择一些行,如果在表2中找到一个值,那么我想检查表2中是否找到了值(我将从命令行输入值),然后选择行从Table1,如果不是我想从另一个表中选择行。 我试过CASE但是从我得到的只有当你想在一个表中检查值时才有效。有什么想法吗?

2 个答案:

答案 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
        )