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

как да предотвратите дубликати с вътрешна заявка за присъединяване (Postgres)

В този случай е възможно да се приложи distinct преди join вероятно го прави по-ефективен:

select fb.* 
from
    formulation_batch fb
    inner join
    (
        select distinct formulationbatch_id
        from formulation_batch_component
        where component_id in (1, 2)
    ) fbc on fb.id = fbc.formulationbatch_id 
where fb.project_id = 1

Забележете как да използвате псевдоним за имената на таблиците, за да направите заявката по-ясна. Също след това in операторът е много удобен. Използването на двойни кавички с тези идентификатори не е необходимо.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да направя препратка към таблица с външни ключове два пъти?

  2. Вземете редове за последните 10 дати

  3. COPY с динамично име на файл

  4. Heroku:PG::ConnectionBad:не можа да се свърже със сървъра:Връзката е отказана

  5. Ограничение на Postgres, гарантиращо наличието на една колона от много?