Почему я должен написать "Удалить t2 ОТ" вместо "Удалить ИЗ"?
Это из-за синтаксиса УДАЛИТЬ
DELETE
[ FROM ] <--optional keyword FROM
{ { table_alias
| <object> <--> <object> ::= table_or_view_name
| @table_variable
}
[ FROM table_source [ ,...n ] ] <-- note the whole FROM statement is optional, not only the FROM keyword
......
FROM table_source
Specifies an additional FROM clause. **This Transact-SQL extension to DELETE** allows specifying data from <table_source> and deleting the corresponding rows from the table in the first FROM clause.
DELETE (необязательно FROM) и может использовать псевдоним таблицы или объект, который является таблицей или представлением
После DELETE нет производной таблицы / table_source, поэтому (для удаления из производной таблицы) ) единственный применимый вариант - использовать псевдоним. Второй FROM принимает table_source, который может быть производной таблицей. Следовательно, в случае производной таблицы
DELETE [FROM] alias
FROM (....) as alias
, почему она также может выполнять ту же операцию удаления с базовой реальной таблицей MyTable
До тех пор, пока производная Таблица сохраняет детализацию каждой строки (каждая строка может быть идентифицирована отдельно), а область действия dml ограничена одной таблицей (с учетом определения производной таблицы), после чего возможны операции dml с производными таблицами, представлениями, ctes.