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

別のテーブルに存在しない1つのテーブルからすべてのレコードを選択するにはどうすればよいですか?

    SELECT t1.name
    FROM table1 t1
    LEFT JOIN table2 t2 ON t2.name = t1.name
    WHERE t2.name IS NULL
    

    Q :ここで何が起こっているのですか?

    A :概念的には、table1からすべての行を選択します 各行について、table2で行を見つけようとします nameの値は同じです 桁。そのような行がない場合は、table2をそのままにします。 その行の結果の一部は空です。次に、一致する行が存在しない結果の行のみを選択することにより、選択を制限します。最後に、nameを除くすべてのフィールドを結果から無視します 列(table1から存在すると確信しているもの 。

    すべての場合に可能な限り最もパフォーマンスの高い方法ではないかもしれませんが、ANSI92SQLを実装しようとする基本的にすべてのデータベースエンジンで機能するはずです



    1. MySQLで特殊文字をエスケープするにはどうすればよいですか?

    2. 動的列の行への転置

    3. トランザクション内のエラーを無視するようにPostgresqlに依頼できますか

    4. MariaDBの日付から週番号を抽出する5つの関数