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

Bagaimana Melakukan GABUNGAN ANTI SEMI KIRI di SQL Server

LEFT ANTI SEMI JOIN adalah jenis gabungan yang mengembalikan hanya baris yang berbeda di baris kiri yang tidak memiliki baris yang cocok di baris kanan.

Tetapi ketika menggunakan T-SQL di SQL Server, jika Anda mencoba secara eksplisit menggunakan LEFT ANTI SEMI JOIN dalam kueri Anda, Anda mungkin akan mendapatkan kesalahan berikut:

Msg 155, Level 15, State 1, Line 4
'ANTI' is not a recognized join option.

Untungnya, SQL Server menyertakan EXCEPT operator, yang memungkinkan kita untuk melakukan LEFT ANTI SEMI JOIN .

Saat Anda menggunakan EXCEPT operator, ini muncul dalam rencana eksekusi kueri sebagai LEFT ANTI SEMI JOIN .

Anda juga dapat membuat subkueri yang melakukan hal yang sama.

Contoh

Bayangkan kita memiliki dua tabel; Cats dan Dogs , dan kami kemudian menjalankan kueri berikut:

SELECT 
    CatName AS PetName
FROM Cats
EXCEPT
SELECT 
    DogName AS PetName
FROM Dogs;

Kueri ini menggunakan EXCEPT operator, dan itu akan muncul sebagai LEFT ANTI SEMI JOIN dalam rencana eksekusi.

Ini mirip dengan melakukan hal berikut:

SELECT 
    DISTINCT CatName
FROM Cats c 
WHERE NOT EXISTS (SELECT DogName FROM Dogs d
WHERE c.CatName = d.DogName);

Inilah rencana eksekusi untuk kueri itu:

Jika Anda menggunakan U-SQL dengan Azure Data Lake Analytics, Anda dapat menggunakan ANTISEMIJOIN klausa untuk melakukan anti semi join kanan dan kiri. Artinya, Anda dapat menggunakan LEFT ANTISEMIJOIN atau RIGHT ANTISEMIJOIN .


  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 menerapkan Memiliki Klausa dengan Grup dengan di Select Query - Tutorial SQL Server / TSQL Bagian 131

  2. Memperkenalkan Fitur Baru - Analisis Deadlock

  3. Konversi 'datetimeoffset' menjadi 'waktu' di SQL Server (Contoh T-SQL)

  4. SQL Server:Cara memilih semua hari dalam rentang tanggal meskipun tidak ada data selama beberapa hari

  5. Permintaan pembaruan SQL menggunakan gabungan