PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

jak wybrać tylko unikalne wartości z powiązanych tabel

Możesz użyć funkcji okna, aby wykonać zewnętrzne połączenie tylko w pierwszych wierszach:

select t.id, t.b1_name, b2.b2_name
from (
  select p.id, b1.b1_name, row_number() over (partition by p.id order by b1_name) as rn
  from parent p
    join branch_1 b1 on b1.parent_id = p.id
) t
  left join (
    select parent_id, b2_name, 
           row_number() over (partition by parent_id) as rn
    from branch_2 
  ) b2 on b2.parent_id = t.id and b2.rn = t.rn
order by t.id;

Przykład online:https://rextester.com/GNYF31027



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zezwól na dostęp do Postgresql z dowolnego komputera

  2. Zwracanie zestawu wierszy z funkcji plpgsql.

  3. Zapytanie SQL:pobierz uporządkowane wiersze z tabeli

  4. org.hibernate.type.TextType i Oracle

  5. Django unikalny związek z polem i wieloma kobietami na sobie