• ベストアンサー
  • すぐに回答を!

PL/SQLのDELETE文について

  • 質問No.135327
  • 閲覧数729
  • ありがとう数4
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 92% (38/41)

PL/SQLでDELETE文を書こうとしているのですが、
文法がわかりません。。。
分かる方がおられましたら、教えてくださいm(_ _)m

今、TABLE1を削除したいのですが、条件がいろいろあって、
以下のように書いてみたのですがダメでした。
こういう書き方は、できないんでしょうか・・・。

削除条件は、TABLE2に存在し、かつ、TABLE2のTENSUが0のもので、
TABLE3が存在しないものです。

DELETETABLE1
FROMTABLE1
,TABLE2
,TABLE3
WHERETABLE1.ID = TABLE2.ID
ANDTABLE2.TENSU = 0
ANDNot Exists (SELECT TABLE3.ID
FROMTABLE3
WHERETABLE3.ID = TABLE2.ID)

説明が下手なので、うまく、伝わっているか、心配なのですが・・・、
よろしくお願いします。

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

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

ベストアンサー率 33% (1403/4213)

PL/SQLというより、単純なSQLですね。

DELETE TABLE1
WHERE TABLE1.ID in
(select TABLE2.ID
FROM TABLE
WHERE TABLE2.TENSU=0
AND TABLE2.ID Not in
(SELECT TABLE3.ID
TABLE3
WHERE TABLE3.ID=TABLE2.ID
)
)

でしょうかね?
実行確認せずに記述してますので間違ってたらごめんなさい。

その他の回答 (全1件)

  • 回答No.2

ベストアンサー率 33% (1403/4213)

すみません。一部訂正します。

DELETE TABLE1
WHERE TABLE1.ID in
(select TABLE2.ID
FROM TABLE
WHERE TABLE2.TENSU=0
AND TABLE2.ID Not in
(SELECT TABLE3.ID
TABLE3
)
)

通常の数式のルールと同じく、括弧の中から処理されます。
Deleteの条件文(select table2.id以降)でテストしてみて
OKならdelete文を追加してください。

なお、3テーブルともIDにINDEXを作成した方が速いかな?
お礼コメント
laertes_h

お礼率 92% (38/41)

早速の回答、ありがとうございます!
INを使わないといけなかったんですね・・・。
SQLもあまりやったことないので。
これを参考に、PG作ってみたら、できました。
ホントにありがとうございました(^^)
投稿日時:2001/09/14 14:32
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ