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

SQLServerJOINにNULL値がありません

    結合について明示することができます:

    SELECT Table1.Col1, Table1.Col2, Table1.Col3, Table2.Col4
    FROM Table1 INNER JOIN
         Table2
          ON (Table1.Col1 = Table2.Col1 or Table1.Col1 is NULL and Table2.Col1 is NULL) AND
             (Table1.Col2 = Table2.Col2 or Table1.Col2 is NULL and Table2.Col2 is NULL)
    

    実際には、coalesce()を使用する可能性が高くなります 結合状態:

    SELECT Table1.Col1, Table1.Col2, Table1.Col3, Table2.Col4
    FROM Table1 INNER JOIN
         Table2
         ON (coalesce(Table1.Col1, '') = coalesce(Table2.Col1, '')) AND
            (coalesce(Table1.Col2, '') = coalesce(Table2.Col2, ''))
    

    ここで'' どちらのテーブルにもない値になります。

    注意の言葉。ほとんどのデータベースでは、これらの構成のいずれかを使用すると、インデックスを使用できなくなります。



    1. Mysqlの一致...対%term%のような単純なもの

    2. SELECT内の一時的なシーケンス

    3. 外部キーIDを使用して2つのテーブルを結合する

    4. MySQL、RailsActiveRecordの日付グループとタイムゾーン