sql >> データベース >  >> RDS >> Sqlserver

SQLServerでLEFTSEMIJOINを実行する方法

    LEFT SEMI JOIN 一種のハーフジョインです。クエリの左側と右側の両方のクエリによって返される個別の値を返します。

    ただし、SQL ServerでT-SQLを使用する場合、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として表示されます。 。

    同じことを行うサブクエリを作成することもできます。

    2つのテーブルがあると想像してください。 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);

    そのクエリの実行プランは次のとおりです。

    Azure Data Lake AnalyticsでU-SQLを使用する場合は、SEMIJOINを使用できます。 右と左の半結合を行う句。つまり、LEFT SEMIJOINを使用できます またはRIGHT SEMIJOIN


    1. チェック制約内のSQLサブクエリ

    2. PostgreSQL、レシピで材料を計算するための複雑なクエリ

    3. MySQL:SELECTステートメントでは大文字と小文字が区別されますか?

    4. MySQLデータベースへの接続