我有以下查詢(MySQL的):MySQL查詢幫助 - 使用=與任何
SELECT col1, col2 FROM database1.table
->WHERE col3 != ANY(SELECT col1 FROM database2.table)
->ORDER BY this, that;
而我也希望這將讓我在數據庫1從表中選擇col1和col2上,其中COL3(仍在database1中)與數據庫2中的表中的col1不等於任何內容。
當然,這不會工作,因爲SELECT COL1 FROM database2.table返回多行,所以如果等於ROW1,那麼它不等於2行,所以它仍然返回。
如何做這正確的方式有什麼想法?
我不知道子查詢在MySQL中沒有優化。這是否意味着,如果必要的約束條件可用,那麼沒有查詢轉換工具將「NOT IN」操作轉換爲反連接? –
我也會考慮加入。謝謝!當你執行' – Jason
IN(SELECT ...)'MySQL的執行對在外層一個發現每一行內選擇(而不是進行內部的選擇只有一次,之前外) 所以,你必須寫SELECT COL1 ,COL2,a.col FROM database1.table LEFT JOIN(SELECT COL1 AS山坳FROM database2.table)爲ON(table.col3 = a.col1)WHERE COL IS NULL –