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
подбирается, но ожидалвне области ".
Почему это?