PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Postgresql IN оператор

Това поведение е правилно според стандартите ANSI.

Ако неквалифицираното име на колона не се разреши във вътрешния обхват, тогава ще се вземе предвид външният обхват. Толкова ефективно, че правите неволно корелирана подзаявка.

Докато таблицата profile съдържа поне един ред, тогава

 FROM users
 WHERE user_id IN (
        SELECT user_id FROM profile
        )

в крайна сметка ще съпостави всички редове в users (освен където users.user_id IS NULL като WHERE NULL IN (NULL) не се оценява като вярно). За да избегнете този възможен проблем, можете да използвате две имена на части.

DELETE FROM users
WHERE  user_id IN (SELECT p.user_id
                   FROM   profile p) 

Ще даде грешка




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Запитването на комбинации от JSON връща странни резултати

  2. Защо SQL идентификационните последователности излизат от синхрон (по-специално с помощта на Postgres)?

  3. Изброяване на дяловете на таблицата в таблицата на Postgres

  4. Postgresql таблици съществуват, но получаването на релация не съществува при запитване

  5. Как да променя стойността на единично свойство в типа данни PostgreSQL JSONB?