Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да направите ЛЯВО ПОЛУ ПРИСЪЕДИНЕНИЕ в SQL Server

A LEFT SEMI JOIN е нещо като полусъединяване. Връща всички различни стойности, които се връщат както от заявката от лявата, така и от дясната страна на заявката.

Въпреки това, когато използвате T-SQL в SQL Server, ако се опитате изрично да използвате LEFT SEMI JOIN във вашата заявка вероятно ще получите следната грешка:

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

За щастие T-SQL включва INTERSECT оператор, който ни позволява да извършим LEFT SEMI JOIN .

Когато използвате INTERSECT оператор, той се появява в плана за изпълнение на заявката като LEFT SEMI JOIN .

Можете също така да създадете подзаявка, която прави същото.

Пример

Представете си, че имаме две маси; Cats и Dogs и след това изпълняваме следната заявка:

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

Тази заявка използва INTERSECT оператор и следователно ще се появи като LEFT SEMI JOIN в плана за изпълнение.

Това е подобно на това да направите следното:

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

Ето плана за изпълнение на тази заявка:

Ако използвате U-SQL с Azure Data Lake Analytics, можете да използвате SEMIJOIN клауза за извършване на дясно и ляво полусъединяване. Това означава, че можете да използвате LEFT SEMIJOIN или 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. Заменете низ с друг низ в SQL Server (T-SQL)

  2. Как да предотвратите автоматичното изключване на SQL Server LocalDB?

  3. T-SQL Cast срещу Convert

  4. Как да конвертирате низ в дата/час в SQL Server с помощта на CONVERT()

  5. Връща всички възможни комбинации от стойности на колони в SQL