みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

存在しないレコードの抽出方法について

table_aに存在するidのうち、table_bには存在しないidを抽出するSLQ文を作成したいと思ったのですが、抽出方法が分からなかったので、アドバイスいただける方がいらっしゃいましたら、ご教示いただけたらと思います。

下記の例では、table_aには、101~106までのidがあるのに対し、table_bには101,102,104のidがあるため、103,105,106を抽出したいと思います。


CREATE TABLE IF NOT EXISTS `table_a` (
`auto_id` int(11) NOT NULL,
`id` varchar(7) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `table_a` (`auto_id`, `id`) VALUES
(1, '101'),
(2, '102'),
(3, '103'),
(4, '104'),
(5, '105'),
(6, '106');

CREATE TABLE IF NOT EXISTS `table_b` (
`auto_id` int(11) NOT NULL,
`id` varchar(7) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `table_b` (`auto_id`, `id`) VALUES
(1, '101'),
(2, '102'),
(3, '102'),
(4, '102'),
(5, '104'),
(6, '104');

以上、よろしくお願いします。

投稿日時 - 2010-11-28 23:34:10

QNo.6350516

すぐに回答ほしいです

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

こういう場合LEFT JOINしてNULLを探すのが常套ですね

SELECT a.id
FROM `table_a` AS a
LEFT JOIN `table_b` AS b ON a.id=b.id
WHERE b.id IS NULL

投稿日時 - 2010-11-29 09:23:23

お礼

ご回答ありがとうございます。
ご教示いただいたSQL文で意図した動作になったと思います。

このたびはどうもありがとうございました。

投稿日時 - 2010-11-29 23:25:04

ANo.2

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

SELECT id FROM table_a AS a
WHERE NOT EXISTS (SELECT id FROM table_b AS b WHERE a.id=b.id);

投稿日時 - 2010-11-29 05:42:49

お礼

ご回答ありがとうございます。
ご教示いただいたSQL文で意図した動作になったと思います。

このたびはどうもありがとうございました。

投稿日時 - 2010-11-29 23:24:33

あなたにオススメの質問