[英]Why does MySQL IN() function work with unknown field
有兩個表:
與領域客戶編號和AnotherId 客戶
具有訂單編號和客戶編號字段的訂單
即使在Orders表中不存在AnotherId,以下查詢如何工作?
SELECT *
FROM Customers
WHERE (CustomerID, AnotherID) IN (SELECT CustomerID, AnotherID FROM Orders);
看來MySQL正在將子查詢中的AnotherId
列引用解釋為屬於Customers
表。
要確認這一點,請考慮以下版本的查詢無效:
SELECT *
FROM Customers
WHERE (CustomerID, AnotherID) IN (SELECT o.CustomerID, o.AnotherID FROM Orders o);
在這種情況下,很明顯,子查詢僅引用Orders
表中的列,並且由於該表沒有AnotherId
列,因此查詢失敗。 這是一個演示,顯示此版本的查詢失敗:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.