プロが教えるわが家の防犯対策術!

先日ご質問させていただいた件の続きになります。
回答いただいた方々のアドバイスをもとに実行しましたが構文エラーで発生してしまい、あれこれ試していますが解決できずにいます。
申し訳ありませんがアドバイスお願いします。

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

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

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

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

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

A 回答 (1件)

SQL Server の構文では、DELETE FROM で指定するテーブル名に別名が使えないようです。



下記に変更すれば動作します。

DELETE FROM テーブル
WHERE テーブル.区分 = 2 AND EXISTS (
SELECT 1 FROM テーブル B
WHERE テーブル.キー = B.キー AND B.区分 = 1)
    • good
    • 1
この回答へのお礼

動作確認しました。
DELETE FROMで別名使用できないのは初耳でした。。
勉強になりました。ありがとうございます!

お礼日時:2018/08/27 14:17

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

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