Ответ 1
- Чтобы избежать двусмысленности, потому что WITH можно использовать в другом месте
..FROM..WITH (NOLOCK)..
RESTORE..WITH MOVE..
- Он необязателен для завершения операторов с
;
в SQL Server
Соединяясь, предыдущий оператор должен быть прерван перед WITH/CTE. Чтобы избежать ошибок, большинство людей используют ;WITH
, потому что мы не знаем, что есть перед CTE
So
DECLARE @foo int;
WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
...;
совпадает с
DECLARE @foo int
;WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
...;
Команда MERGE имеет аналогичное требование.