• 締切済み

SQLがわからないので教えて下さい。

SQLがわからないので教えて下さい。 素人な質問なのかもしれませんが、お願いします。 次のような2つのテーブルがあるとします。 テーブルA ID,name -------- 1,name1 2,name2 3,name3 4,name4 5,name5 テーブルB ID,hoge1,hoge2,hoge3 --------------------- 2, hoge, hoge, hoge 3, hoge, hoge, hoge テーブルAのとテーブルBのIDを見て、テーブルBのID に無いテーブルAのIDを取り出す方法が知りたいです。 質問がわかりにくいかもしれないので上の例でいえば、テーブルAのIDが1~5でテーブルBの方にがありますので、取り出したいIDは、1、4、5です。 どうかご教授ください。 よろしくお願いします。

みんなの回答

回答No.4

存在のするかの検査は、IN条件かEXISTS条件での検査と なるので、その否定(NOT)で、存在しないことを条件と すればよろしいかと思います。 select * from テーブルA where not exists(select * from テーブルB where テーブルB.id=テーブルA.id) 実行性能上、NOT-INより、NOT-EXISTSの方が良いような 気がするのですが...

  • gimmick
  • ベストアンサー率49% (134/270)
回答No.3

試してないので自信がないのですが、下記の方法ではどうでしょうか? SELECT ID FROM テーブルA WHERE ID NOT IN (SELECT ID FROM テーブルB) それから、MySQLならMySQLのカテゴリで質問すべきですね。

kopankopan
質問者

お礼

回答ありがとうございました。 早速試してみたいと思います。

  • aoihappa
  • ベストアンサー率61% (11/18)
回答No.2

microsoftならこれでいいのでは? SELECT テーブルA.ID, テーブルA.name, テーブルB.ID FROM テーブルA LEFT JOIN テーブルB ON テーブルA.ID = テーブルB.ID WHERE (((テーブルB.ID) Is Null));

kopankopan
質問者

お礼

回答ありがとうございました。 とても参考になりました。

  • 007tomo
  • ベストアンサー率37% (9/24)
回答No.1

ただSQLだけじゃ誰も答えないと思うんだけど。 わかる範囲でのSQLには二種類ありそれぞれ設定方法が違うはずなのではっきりどのSQLサーバの設定方法なのか? PostgeSQL MySQL 両者とも同じSQLですが仕様や設定方法が違うのだけはわかりますが。

kopankopan
質問者

補足

すみませんでした。 MYSQLです。