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

Mengapa kondisi CROSS JOIN tidak berfungsi di klausa 'ON', hanya klausa WHERE?

CROSS JOIN adalah operator SQL untuk melakukan produk kartesius penuh antara dua tabel. Karena ini adalah produk kartesius, itu tidak memungkinkan kondisi apa pun selama operasi , Anda hanya dapat membatasi hasilnya dengan beberapa operasi penyaringan (kondisi WHERE).

JOIN (INNER dan OUTER JOIN, yaitu) operator, hanyalah produk kartesius bersama dengan operator penyaringan yang diekspresikan di bagian ON dari operator (dan sebenarnya dalam sintaks asli SQL tidak ada operator JOIN, cukup "koma" notasi untuk menunjukkan produk dengan kondisi gabungan yang selalu diekspresikan di bagian WHERE).

Contoh:

notasi "lama":

SELECT ...
FROM table1 t1, table2 t2
WHERE t1.attribute = t2.attribute

setara dengan notasi "modern":

SELECT ...
FROM table1 t1 INNER JOIN table2 t2 ON t1.attribute = t2.attribute

sedangkan untuk produk kartesius:

notasi "lama":

SELECT ...
FROM table1 t1, table2 t2

setara dengan notasi "modern":

SELECT ...
FROM table1 t1 CROSS JOIN table2 t2

Dengan kata lain, CROSS JOIN yang membutuhkan kondisi sebenarnya adalah semacam INNER JOIN.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. EXECUTE of SELECT ... INTO tidak diimplementasikan

  2. Kunci asing merujuk kunci asing lainnya di PostgreSQL

  3. Slide pembicaraan:Peningkatan Partisi di PostgreSQL 11

  4. Masukkan massal ke Postgres dengan brianc/node-postgres

  5. Menyimpan dan membandingkan kombinasi unik