SQL Server 2008 R2 (バージョン 10.50.4000.0) を使用する場合:
私は2つのテーブルを持っています。IDが別のテーブルに存在するあるテーブルのデータを削除したい。十分に単純です。ただし、入力ミスにより、パーサーのバグと思われるものが見つかりました。
以下のスクリプトでは、[SomeID] は Table1 の列ですが、実際には Table2 には存在しません。
Delete from Table1 where [SomeID] in (Select [SomeID] from Table2)
サブクエリを実行する"Select [SomeID] from Table2
と、列が存在しないことを示す適切なエラー メッセージが表示されます。
ただし、削除クエリ全体を実行すると、エラーなしで実行され、table1 内のすべてが削除されます
パーサーは、列がテーブル 2 に存在しないことを認識したはずです。サブクエリの外側から列を使用できることはわかっています。パーサーは、テーブル 1 の列を使用するつもりであると想定していたことに気付きましたが、 table2 の列を指定していなかったので、私の意見では、パーサーは何か問題があることを知るのに十分賢かったはずです。幸いなことに、これが発生したとき、私たちはテスト環境にいました。:)
ありがとう、トニー