SQL Delete очищает таблицу вместо ошибок

У меня есть кусок 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 изTableA поднят, но ожидал, что это будет "вне области".

Почему это?

Ответы на вопрос(2)

Ваш ответ на вопрос