• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DELETEでテーブル削除方法)

DELETEでテーブルを削除する方法

このQ&Aのポイント
  • テーブルAとテーブルBを比較して、個人IDをテーブルBから削除します。
  • テーブルCにテーブルAのIDが存在すれば、テーブルCを削除し、存在しなければ、テーブルAとテーブルBの個人IDを削除します。
  • 他にも効率的な方法があれば、教えてください。

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

  • ベストアンサー
  • assault852
  • ベストアンサー率48% (1364/2797)
回答No.3

ごめんなさい。 言われていることとやりたいことが、私の頭の中でかみ合わなくなってきたような気がしてます。 回答2の補足はテーブルCのDelete条件ですよね。 テーブルCはテーブルAのIDと同じレコードが削除になりますね。 それはいいです。 存在しなければ削除しようがないですね。それもいいです。 でも、テーブルAはそのID(テーブルCに存在しないID)のレコードを削除するのですよね。 そこをどうしようとしているのかがわからなくて、回答2の質問になりました。 >削除されない(テーブル)に対してSQLを実行するのはプログラム上良くないですかね… 削除される対象が絶対に存在しない状態のテーブルに対してDelete条件のSQLを発行することを指しているのなら、良くないとは言いませんが「処理時間の無駄」ですよね。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • assault852
  • ベストアンサー率48% (1364/2797)
回答No.2

すみません。一旦リセットさせてください。 テーブルB、テーブルCはテーブルAと同じIDという条件でDeleteできますが、テーブルAに対して、テーブルCに存在しなかったIDというのは、どうやって判定するつもりですか。

NeilMania
質問者

お礼

メッセージありがとうございます。 SELECT * FROM TABLEC IN (SELECT * FROM TABLEA WHERE ID = 5) としてテーブルCにIDが存在しなければ削除されないので 問題ないと思っていたのですが… 削除されないに対してSQLを実行するのは プログラム上良くないですかね…

NeilMania
質問者

補足

DELETE * FROM TABLEC WHERE ID IN(SELECT * FROM TABLEA WHERE TABLEA.ID = 5) の間違いです。 

すると、全ての回答が全文表示されます。
  • assault852
  • ベストアンサー率48% (1364/2797)
回答No.1

テーブルCに存在しなければ、AもBも削除するのですから、先にテーブルAとCの比較をした方がよくないですか。 テーブルAとCを比較 → Cに存在する → Cから削除 → Cに存在しない → AとBから削除 次にテーブルAとBを比較 → Bに存在する → Bから削除

NeilMania
質問者

お礼

ご連絡遅くなりました。SQL初心者のため ずっと考えておりました。 'テーブルAとCを比較 'Cに存在する場合Cから削除 DELETE FROM TABLEC where ID IN (SELECT * FROM TABLEA where TABLE.ID = 5) 'テーブルA,Bを比較 'Bに存在するBから削除 DELETE FROM TABLEB where ID IN (SELECT * FROM TABLEA where TABLE.ID = 5) ' テーブルA削除(アドバイスどおりではないと思います) DELETE FROM TABLEA WHERE TABLEA.ID = 5 アドバイスを頂いた通りは、出来ませんでした… ここまでSQLを複雑に書かないと出来ないのでしょうか… もしよろしければもう少しアドバイス頂けるとありがたいです。 よろしくお願いいたします。

すると、全ての回答が全文表示されます。