dポイントプレゼントキャンペーン実施中!

先日ご質問させていただいた件の関連になります。
以下テーブルから区分1,2のデータで区分2を削除(DELETE文)したいのですがなかなか実現できません。
申し訳ありませんがアドバイスお願いします。

【テーブル】
No キー  区分
1 001   2
2 001   1
3 002   2
4 002   2
5 001   null

【削除条件】
同一キー単位で区分1と2が混在している場合は区分2のレコードのみ削除する。
(区分1のレコードは抽出するため削除しない。)
上記以外は一律削除しない。

削除対象 →No.1
削除対象外→No.2,3,4,5

A 回答 (2件)

DELETE FROM テーブル A


WHERE A.区分 = 2 AND EXISTS(SELECT 1 FROM テーブル B WHERE A.キー = B.キー AND B.区分 = 1)

でいかがでしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
提示いただいた文を実行しようとしましたが以下の構文エラーが発生してしまいました。

DELETE FROM テーブル A
WHERE A.区分 = 2 AND EXISTS (
SELECT 1 FROM テーブル B
WHERE A.キー = B.キー AND B.区分 = 1)

WHERE(2行目) → 'WHERE'付近に不適切な構文があります。
A.キー → マルチパート識別子"A.キー"をバインドできませんでした。


色々試してみましたが原因が特定できないでいます。
何から何まで聞いて申し訳ありませんがご教授お願い致します。

お礼日時:2018/08/27 09:38

つまり、同一キーで区分1がある時、区分1以外のレコードは削除するわけですよね?


これでいいんじゃないかな。
DELETE
FROM
テーブル A
WHERE
EXISTS (
SELECT
1
FROM
テーブル B
WHERE
A.キー = B.キー
AND B.区分 = 1
)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
提示いただいた文を実行しようとしましたが以下の構文エラーが発生してしまいました。

DELETE FROM テーブル A
WHERE EXISTS (
SELECT 1
FROM テーブル B
WHERE A.キー = B.キー AND B.区分 = 1)

WHERE(2行目) → 'WHERE'付近に不適切な構文があります。
A.キー → マルチパート識別子"A.キー"をバインドできませんでした。


色々試してみましたが原因が特定できないでいます。
何から何まで聞いて申し訳ありませんがご教授お願い致します。

お礼日時:2018/08/27 09:20

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

関連するカテゴリからQ&Aを探す