Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Memfilter GABUNGAN:WHERE vs. ON

tautan @Gratzy disediakan sangat membantu

Perbedaan antara kondisi dalam klausa ON dan klausa WHERE tentu saja abu-abu.

Untuk INNER JOINS mereka setara. Untuk OUTER JOINS, pemahaman Anda benar bahwa klausa WHERE diterapkan secara konseptual setelah kondisi ON dievaluasi.

Tetapi dalam banyak kasus perbedaannya lebih pada niat daripada fungsionalitas. Sering ada perbedaan semantik antara kondisi ON dan klausa WHERE.

Misalnya, versi SQL Server yang lebih lama benar-benar menerapkan sintaks ON menggunakan kondisi dalam klausa WHERE, menggunakan *= atau =* sintaks untuk menyiratkan gabungan LEFT atau RIGHT (yang menyebabkan hasil yang agak berbeda dari LEFT dan RIGHT JOIN yang setara dalam beberapa kasus)

Secara umum, saran saya adalah selalu menggunakan bidang kunci yang sesuai dalam klausa AKTIF untuk menggabungkan catatan berdasarkan logika bagaimana catatan berhubungan satu sama lain. Gunakan klausa WHERE untuk menerapkan ketentuan pemfilteran yang secara progresif membatasi kumpulan hasil ini.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL untuk menentukan hari akses minimum berurutan?

  2. Real vs. Floating Point vs. Uang

  3. Apa perbedaan antara; dan GO di T-SQL?

  4. Memasukkan lebih dari 1000 baris dari Excel ke SQLServer

  5. Hubungkan Pengguna Windows yang berbeda di SQL Server Management Studio (2005 atau yang lebih baru)