我有以下查詢:選擇吸空的子查詢,給人怪異的結果
SELECT * FROM `table1` WHERE `id` IN
(
SELECT `table1_id` FROM `table2` WHERE `id` in
(
SELECT `table2_id` FROM `table3` WHERE `customer_id` = 57
)
)
它返回10行(50)
但查詢
SELECT `table1_id` FROM `table2` WHERE `id` in
(
SELECT `table2_id` FROM `table3` WHERE `customer_id` = 57
)
返回0行(哪個是對的)。
那麼,我的第一個查詢如何返回幾行,而它應該返回0(如子查詢)。
如果我使用應該返回第二個查詢中的行的customer_id,則所有事情都應該如此。
所以我的問題是爲什麼:
爲什麼查詢返回的行,而子查詢不?
你不能只是加盟'table2','table3'並在'WHERE落實'customer_id' '而不是嵌套多個子查詢? – Santi
@Abhi這不是一個相關的子查詢。 – Barmar
如果真的發生這種情況,聽起來像是一個錯誤。你能提供一些示範數據來證明它嗎? – Barmar