プロが教える店舗&オフィスのセキュリティ対策術

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');

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

A 回答 (2件)

こういう場合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
    • good
    • 3
この回答へのお礼

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

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

お礼日時:2010/11/29 23:25

SELECT id FROM table_a AS a


WHERE NOT EXISTS (SELECT id FROM table_b AS b WHERE a.id=b.id);
    • good
    • 2
この回答へのお礼

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

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

お礼日時:2010/11/29 23:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!