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

Mengapa dan kapan LEFT JOIN dengan kondisi di klausa WHERE tidak setara dengan LEFT JOIN yang sama di ON?

on klausa digunakan ketika join sedang mencari baris yang cocok. where klausa digunakan untuk memfilter baris setelah semua penggabungan selesai.

Contoh dengan suara Disney toons untuk presiden:

declare @candidates table (name varchar(50));
insert @candidates values 
    ('Obama'), 
    ('Romney');
declare @votes table (voter varchar(50), voted_for varchar(50));
insert @votes values 
    ('Mickey Mouse', 'Romney'),
    ('Donald Duck', 'Obama');

select  *
from    @candidates c
left join    
        @votes v
on      c.name = v.voted_for
        and v.voter = 'Donald Duck'

Ini masih mengembalikan Romney meskipun Donald tidak memilih dia. Jika Anda memindahkan kondisi dari on ke where klausa:

select  *
from    @candidates c
left join    
        @votes v
on      c.name = v.voted_for
where   v.voter = 'Donald Duck'

Romney tidak akan ada lagi di kumpulan hasil.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara saya membuat serial grafik besar objek .NET menjadi SQL Server BLOB tanpa membuat buffer besar?

  2. 5 Manfaat Keamanan dari Solusi Pemantauan Database Berbasis Cloud

  3. Ekspor data kueri SQL ke Excel

  4. Kolom Pivot Dinamis di SQL Server

  5. Bagaimana Transaksi Implisit Bekerja di SQL Server