2013-08-19 73 views
3

我需要從表1中選擇一些行讓我們說如果在表2中找到一個值。所以我想檢查值(我將從命令行輸入值)在Table 2中找到,然後從Table1中選擇行,如果沒有,我想從另一個表中選擇行。 我試過CASE,但是從我得到的結果來看,只有當你想檢查一個表內的值時纔有效。任何想法?如果在另一個表中找到記錄,請從表中選擇

回答

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) 
+0

謝謝,但如果表格具有不同數量和/或類型的列,該怎麼辦? –

+0

@Albano Vito:使用填充(添加NULL),強制轉換,例如:select id,null,comments ... union all select id,name,null –

+0

非常感謝您:) –

1

該查詢將從Table1如果存在Table3:id選擇,並從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 
     ) 
+0

感謝回答,但表1和表2不具有相同的列號或類型。我想單獨選擇其中之一。 –

相關問題