
MYSQL5.5について質問です。
Table1.idからTable2.idを引いて差集合を得たいとと思います。
例えば、
Table1.id
001
002
003
004
Tbale2.id
002
003
004
とあれば、最終的に欲しい結果は
001
のみです。
SQLを書くと下記のようなSQLになると思います。
mysql> SELECT table1.* FROM table1
-> LEFT JOIN table2 ON table1.id=table2.id
-> WHERE table2.id IS NULL;
しかし、これで差集合が得られるのかわかりません。
left joinして、table2 is nullにすれば、差集合に
なるか教えて頂けますでしょうか?
また、not existsで代用できるみたいですが、その場合、
どのようなSQLを書けばよいでしょうか?
No.1ベストアンサー
- 回答日時:
Table1.id、Table2.idともに主キーならLEFT JOINで差集合が得られます。
しかし
Table2のidに重複があるような場合
002
002
003
004
結合の際に複数行を生じてしまいます。
より一般的にするのなら
SELECT table1.* FROM table1
LEFT JOIN ( select distinct id frpm table2 ) t2 ON table1.id=t2.id
WHERE t2.id IS NULL;
になります。
NOT EXISTSを使うなら
SELECT * FROM TABLE1
WHERE NOT EXISTS
( SELECT 1 FROM TABLE2
WHERE TABLE1.ID=TABLE2.ID )
になります。
この場合、TABLE2のIDにINDEXがあると有効になる場合が多いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するQ&A
- 1 MySQLでCREATE TABLE
- 2 access2000からmysqlへ access to mysql converter
- 3 MySQL 192.168.0.1の端末から 192.168.0.101のサーバに接続
- 4 from...where を from...join..on にするには
- 5 DB2 create tableコマンドでエラーになる
- 6 MySQLで1つの項目に対しての集計
- 7 [MySQL].mydファイルのサイズが…
- 8 データベースDB2とMySQLについて
- 9 SQLiteで「UPDATE table1 SET cnt+=1」のようなことがしたいのですがどう書けばいいですか?
- 10 1-1-1を1丁目1-1に変換するには?
関連するカテゴリからQ&Aを探す
おすすめ情報
人気Q&Aランキング
-
4
SQL>UPDATEと同時にその件数を...
-
5
access追加クエリ実行時の重複...
-
6
access:連続データ入力
-
7
同姓同名検索
-
8
insertを高速化させたい
-
9
アクセスのクエリ 重複数のカ...
-
10
キーが重複したレコードを無視...
-
11
DB2 双方向でのレプリケーショ...
-
12
重複クエリを使ったデータ削除
-
13
ACCESS2000:主キーに半角と全...
-
14
Oracleでルールベースでの複合索引
-
15
Access 重複しないメールをテー...
-
16
Access昇順レコードを、5分割...
-
17
MySQLとSQLServerの性能の違い...
-
18
Oracle 2つのDate型の値の差を...
-
19
UPDATEで既存のレコードに文字...
-
20
片方のテーブルに存在しないレ...
おすすめ情報