如果我寫了下面的查詢會發生什麼:SQL空在聲明
SELECT *
FROM table
WHERE name IN (select name from someotherTable where id = 3)
和內部查詢(在報表內)不返回結果集
會外,其中自動評估爲真或假?
如果我寫了下面的查詢會發生什麼:SQL空在聲明
SELECT *
FROM table
WHERE name IN (select name from someotherTable where id = 3)
和內部查詢(在報表內)不返回結果集
會外,其中自動評估爲真或假?
這將返回一個空集。
讓我們來測試它;
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)
但是'SELECT * FROM TableA WHERE id = ALL(SELECT * FROM TableB);'確實返回結果。 –
@MartinSmith是的,因爲我相信你知道,'ALL'對於空集合返回true(更不用說完全改變了整個問題的含義:)) –
只想到我會在那裏把它塞進去! –
我不知道你是否意識到這一點,我的意思並不是要表露無疑,但你可能已經能夠找出確鑿你自己在更短的時間,它採取張貼這個問題。 –