2010-03-19 2 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 
     ) 
Смежные вопросы