PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

BERGABUNG (PILIH ... ) pada 1=1?

Niatnya adalah tanpa syarat LEFT JOIN , yang berbeda dari CROSS JOIN di mana semua baris dari ekspresi tabel kiri dikembalikan, bahkan jika tidak ada kecocokan dalam ekspresi tabel kanan - saat CROSS JOIN menjatuhkan baris seperti itu dari hasilnya. Selengkapnya tentang bergabung dalam manual.

Namun:

1=1 tidak ada gunanya di Postgres dan semua turunannya termasuk Amazon Redshift. Cukup gunakan true . Ini mungkin dibawa dari RDBMS lain yang tidak mendukung boolean ketik dengan benar.

... LEFT JOIN (SELECT  ...) ue ON true

Kemudian lagi, LEFT JOIN tidak ada gunanya untuk subquery khusus ini dengan SELECT MIN(modified) FROM user di sebelah kanan, karena SELECT dengan fungsi agregat (min() ) dan tidak ada GROUP BY klausa selalu mengembalikan tepat satu baris. Kasus ini (tetapi bukan kasus lain di mana tidak ada baris mungkin ditemukan) dapat disederhanakan menjadi:

... CROSS JOIN (SELECT MIN(modified) AS first_modified FROM user) ue


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kueri pivot dinamis menggunakan PostgreSQL 9.3

  2. Bagaimana saya bisa mengimpor file JSON ke PostgreSQL?

  3. Bagaimana cara saya memasukkan beberapa baris dengan benar ke PG dengan node-postgres?

  4. Django + Psycopg2:InterfaceError:hanya protokol 3 yang didukung

  5. Tidak dapat menghubungkan PostgreSQL ke basis data jarak jauh menggunakan pgAdmin