• ベストアンサー

MysqlのSQL文について

AccessとMysqlを用いてデータベースシステムを作成しています。 添付図の左の表から,右の表の品番と枝番が一致するデータを削除する場合(今回はaaaの2と6)は,どのようにSQL文を記述すればよいでしょうか? Do Untilで1行毎に比較して削除する方法では時間がかかり過ぎたため,SQL文で一度で処理できないかと考えたのですが,SQL文をどのように記述すればよいかわかりませんでした... お分かりになられる方がいらっしゃいましたら,ご教授宜しくお願い致します。

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

  • ベストアンサー
回答No.1

DELETE FROM 左表 右 WHERE EXISTS(SELECT 右.品番 FROM 右表 右 WHERE 左.品番=右.品番 AND 左.枝番=右.枝番)

con014057
質問者

お礼

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

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

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); みたいな感じでよいのでは?

con014057
質問者

お礼

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

関連するQ&A