2012-09-25 70 views
0

如果我寫了下面的查詢會發生什麼:SQL空在聲明

SELECT * 
FROM table 
WHERE name IN (select name from someotherTable where id = 3) 

和內部查詢(在報表內)不返回結果集

會外,其中自動評估爲真或假?

+3

我不知道你是否意識到這一點,我的意思並不是要表露無疑,但你可能已經能夠找出確鑿你自己在更短的時間,它採取張貼這個問題。 –

回答

7

這將返回一個空集。

1

讓我們來測試它;

CREATE TABLE TableA (id INT); 
INSERT INTO TableA VALUES (1); 
CREATE TABLE TableB (id INT); 
SELECT * FROM TableA 
    WHERE id IN (SELECT * FROM TableB); 

(empty set) 
+0

但是'SELECT * FROM TableA WHERE id = ALL(SELECT * FROM TableB);'確實返回結果。 –

+0

@MartinSmith是的,因爲我相信你知道,'ALL'對於空集合返回true(更不用說完全改變了整個問題的含義:)) –

+0

只想到我會在那裏把它塞進去! –