cMi*_*nor 7 sql common-table-expression sql-server-2008
这么多次见过with,很多次SQL Server都问;过它
;with ...工作怎么样?
;with coords(...) as (
SELECT * ...
)
Run Code Online (Sandbox Code Playgroud)
为什么必须;在它之前?
Guf*_*ffa 14
分号在SQL中用于结束查询.将它放在这样的查询之前只是为了确保数据库能够理解任何先前的查询已经结束.
最初在每次查询后都需要逐行输入,因此数据库必须知道何时运行查询.当整个查询以单个字符串发送时,如果SQL语法不足以确定查询结束的位置,则只需要分号.由于with关键字具有不同的用途,因此有时需要使用分号才能确保它不是上一个查询的一部分.
对CTE使用WITH需要先终止先前的语句;.在开始时使用它可以保证正确的语法
在SQL Server 2008中也是如此
请参阅此SO问题:关键字'with'...前面的语句附近的语法不正确必须以分号结束