2011-08-09 171 views
0
select * from tablename 
    where id in(select id from tablename2 where condition UNION select -1) 

可以使用select -1,就好像內部查詢不會導致任何錯誤一樣。這是可行的或不可行?在「WHERE IN」子句中的sql查詢

+3

如果內部查詢不返回任何內容,那麼外部查詢中不會返回一行。你遇到了什麼錯誤? – Jacob

+0

如果內部查詢沒有返回任何值,我不認爲它會導致錯誤。 –

+0

知道了..如果我們保持在()空白,那麼只有它會給出錯誤。如果內部查詢返回空查詢將返回空結果。謝謝反正 – jit

回答

0

如果查詢不返回任何內容,它不會給出錯誤。它只是返回一個空的結果集。

+0

得到它..如果我們保持在()爲空,那麼只有它給出錯誤。如果內部查詢返回空查詢將返回空結果。謝謝反正 – jit

1

恕我直言,inner-select很不理想根據你發佈SQL

(慢),an inner join會做的伎倆

select * 
from tablename as t1 
inner join tablename2 as t2 
on t1.id=t2.id 
where condition; --- your condition 
1

如果你不得不把它與一個子查詢,那麼正確的方式完成要做到這一點可能是:

SELECT * 
FROM tablename AS t1 
WHERE EXISTS 
    (SELECT id 
    FROM tablename2 AS t2 
    WHERE conditions)