- 締切済み
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です。 どうかご教授ください。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
存在のするかの検査は、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)
試してないので自信がないのですが、下記の方法ではどうでしょうか? SELECT ID FROM テーブルA WHERE ID NOT IN (SELECT ID FROM テーブルB) それから、MySQLならMySQLのカテゴリで質問すべきですね。
- aoihappa
- ベストアンサー率61% (11/18)
microsoftならこれでいいのでは? SELECT テーブルA.ID, テーブルA.name, テーブルB.ID FROM テーブルA LEFT JOIN テーブルB ON テーブルA.ID = テーブルB.ID WHERE (((テーブルB.ID) Is Null));
お礼
回答ありがとうございました。 とても参考になりました。
- 007tomo
- ベストアンサー率37% (9/24)
ただSQLだけじゃ誰も答えないと思うんだけど。 わかる範囲でのSQLには二種類ありそれぞれ設定方法が違うはずなのではっきりどのSQLサーバの設定方法なのか? PostgeSQL MySQL 両者とも同じSQLですが仕様や設定方法が違うのだけはわかりますが。
補足
すみませんでした。 MYSQLです。
お礼
回答ありがとうございました。 早速試してみたいと思います。