1. ホーム
  2. sql

[解決済み] あるテーブルから、別のテーブルに存在しないすべてのレコードを選択するにはどうすればよいですか?

2022-02-28 23:56:45

質問

<ブロッククオート

table1 (id, name)
テーブル2 (id, name)

クエリを実行します。

SELECT name   
FROM table2  
-- that are not in table1 already

解決方法は?

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 ).

この方法は、すべての場合において最もパフォーマンスの高い方法というわけではありませんが、基本的には、これまで ANSI 92 SQL