簡體   English   中英

為什么MySQL IN()函數可用於未知字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM