私は(あなたが思うだろうが)コンパイルしないが、代わりにターゲットテーブルからすべての行を削除するSQLの一部を持っています。
この設定を検討してください。
create table TableA (ColumnA varchar(200));
create table TableB (ColumnB varchar(200));
insert TableA values ('A'),('B'),('C');
insert TableB values ('A');
次に、次のSQL:
--Returns all rows from TableA
select * from TableA;
--Does not error (ColumnA does not exist on TableB)
delete TableA where ColumnA in (select ColumnA from TableB)
--No Rows are returned
select * from TableA;
上記のdeleteステートメントにより、に存在しないTableA
エラーではなく、すべての行がから削除されます。ColumnA
TableB
これを実証するSQLフィドルがここにあります:http ://www.sqlfiddle.com/#!3/9d883/6
ColumnA
fromTableA
がピックアップされているようですが、 「範囲外」であると予想されていました。
どうしてこれなの?