2010-03-19 43 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 
     )