電子書籍の厳選無料作品が豊富!

AccessとMysqlを用いてデータベースシステムを作成しています。

添付図の左の表から,右の表の品番と枝番が一致するデータを削除する場合(今回はaaaの2と6)は,どのようにSQL文を記述すればよいでしょうか?

Do Untilで1行毎に比較して削除する方法では時間がかかり過ぎたため,SQL文で一度で処理できないかと考えたのですが,SQL文をどのように記述すればよいかわかりませんでした...

お分かりになられる方がいらっしゃいましたら,ご教授宜しくお願い致します。

「MysqlのSQL文について」の質問画像

A 回答 (2件)

DELETE


FROM 左表 右
WHERE EXISTS(SELECT 右.品番 FROM 右表 右 WHERE 左.品番=右.品番 AND 左.枝番=右.枝番)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
問題なく,欲しい結果を得ることができました。
Existsを使用するんですね。Inばかり使用して試していました...

お礼日時:2012/09/27 08:12

create table t1 (品番 varchar(30),枝番 int);


insert into t1 values('aaa',1),('bbb',2),('aaa',2),('ccc',3),('aaa',6);
create table t2 (品番 varchar(30),枝番 int);
insert into t2 values('aaa',2),('rrr',5),('bbb',5),('aaa',6);

delete from t1 where (品番,枝番) in (select 品番,枝番 from t2);
みたいな感じでよいのでは?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
いろいろな記述方法があり勉強になります。
質問前に,In演算子を使用していろいろ試していたのですが,記述方法が悪かったみたいでした...

お礼日時:2012/09/27 08:15

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