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

Bagaimana Melakukan KIRI SEMI BERGABUNG di SQL Server

LEFT SEMI JOIN adalah jenis setengah bergabung. Ini mengembalikan nilai berbeda yang dikembalikan oleh kueri di sisi kiri dan kanan kueri.

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

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

Untungnya, T-SQL menyertakan INTERSECT operator, yang memungkinkan kita untuk melakukan LEFT SEMI JOIN .

Saat Anda menggunakan INTERSECT operator, itu muncul dalam rencana eksekusi kueri sebagai LEFT 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
INTERSECT
SELECT 
    DogName AS PetName
FROM Dogs;

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

Ini mirip dengan melakukan hal berikut:

SELECT 
    DISTINCT CatName
FROM Cats c 
WHERE 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 SEMIJOIN klausa untuk melakukan semi join kanan dan kiri. Artinya, Anda dapat menggunakan LEFT SEMIJOIN atau RIGHT SEMIJOIN .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menemukan Kumpulan Basis Data yang Didukung oleh Instans SQL Server Anda

  2. Ambil ID dari catatan yang dimasukkan:Php &MS SQL SERVER

  3. SQL Server:menggabungkan beberapa baris menjadi satu baris

  4. Cara membuat Unique Constraint pada Kolom untuk Tabel yang sudah ada - Tutorial SQL Server / TSQL Part 97

  5. Cara Mengonversi Antara Format Tanggal di SQL Server menggunakan CAST ()