0
考慮下面的SQL語句這個不正確(但有效)的SQL連接甚至意味着什麼?它究竟在做什麼?
select *
from A
inner join B on A.FK = B.PK
inner join C on A.FK = B.PK
這顯然是不正確形成陳述。 C的連接使用B的連接條件。但是,這仍然運行。在這種情況下,口譯員如何決定加入C?爲什麼這甚至是被允許的陳述?有沒有任何情況下,像這樣的東西是可取的?
它是否返回「正確」的數據?對我而言,開發人員看起來像是印刷錯誤,從不重新驗證輸出。 – Amit
@Amit - 這不是一個關於具體情況的問題。我想到了這個問題,因爲事實上我做了一個複製粘貼錯誤的事情,我正在努力並糾正它。但是,我注意到SQL語句仍然運行(很長一段時間),我殺了它。問題是「它究竟在做什麼,它爲什麼被允許,並且它是否可取?」。 –
優化器可隨意自由裁剪條件。所以這將相當於兩個條件(一個是真的)在WHERE部分。至於「它在做什麼」 - 笛卡爾產品就是它正在做的事情。 –