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

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)

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

A 回答 (2件)

すみません。

一部訂正します。

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を作成した方が速いかな?
    • good
    • 0
この回答へのお礼

早速の回答、ありがとうございます!
INを使わないといけなかったんですね・・・。
SQLもあまりやったことないので。
これを参考に、PG作ってみたら、できました。
ホントにありがとうございました(^^)

お礼日時:2001/09/14 14:32

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

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

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