1. ホーム
  2. sql

[解決済み] DELETEステートメントでエイリアスを使用できないのはなぜですか?

2022-04-20 16:10:27

質問

Visual Studio 2010のSQL Server Compact Editionでは(もしかしたらSQL ServerやSQL全般かもしれませんが)、このコマンドは動作します。

DELETE FROM foods WHERE (name IN ('chickens', 'rabbits'))

というエラーが出ますが、このコマンドでは Error near identifier f. Expecting OUTPUT.

DELETE FROM foods f WHERE (f.name IN ('chickens', 'rabbits'))

解決方法は?

テーブルのエイリアスを作成するには、次のように記述します。

DELETE f FROM dbo.foods AS f WHERE f.name IN (...);

このように具体的にエイリアシングする意味がわかりません。 DELETE 特に、(少なくともIRCでは)これはもはや厳密なANSIに準拠していないためです。しかし、コメントにあるように、他のクエリ形式(例えば相関関係)には必要かもしれませんね。