• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:差集合について)

差集合について

このQ&Aのポイント
  • MySQL5.5で差集合を取得する方法について質問です。
  • 差集合を取得するためのSQL文はLEFT JOINとIS NULLを使用します。
  • また、差集合を取得する別の方法として、NOT EXISTSを使用することもできます。

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答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があると有効になる場合が多いです。

mellow91
質問者

お礼

勉強になります!ありがとうございます!!

その他の回答 (1)

  • a_ka_
  • ベストアンサー率16% (1/6)
回答No.2

select Table1.id from Table1 minus select Table2.id from Table2; とか?

関連するQ&A