Странное поведение postgresql - PullRequest
1 голос
/ 19 марта 2010

Может кто-нибудь объяснить мне, почему это так работает?

=> 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);

это работает! и выберите все строки в таблице заказов. То же самое при запуске удаления / обновления. Почему это не выдает ошибку, как раньше?

Спасибо!

1 Ответ

4 голосов
/ 19 марта 2010

В этом запросе

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
        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...