2010-03-19 45 views
1

有人可以解釋我爲什麼這樣工作嗎?奇怪的postgresql行爲

=> select client_id from clients_to_delete; 
ERROR: column "client_id" does not exist at character 8 

但是,把這個一IN()內時...

=> select * from orders where client_id in(select client_id from clients_to_delete); 

它的作品!並選擇訂單表中的所有行。運行刪除/更新時相同。 爲什麼它不會像以前那樣產生錯誤?

謝謝!

回答

4

在這個查詢

SELECT * 
FROM orders 
WHERE client_id IN 
     (
     SELECT client_id 
     FROM clients_to_delete 
     ) 

client_id從外表(orders)拍攝的,因爲不存在與該名稱在內部表沒有場(clients_to_delete):

SELECT * 
FROM orders 
WHERE orders.client_id IN 
     (
     SELECT orders.client_id 
     FROM clients_to_delete 
     )