Yos*_*ari 1 sql sql-server common-table-expression sql-server-2008
这个sql是有效的:
WITH A AS
(SELECT TOP 1000 *
FROM dbo.SomeTable)
SELECT * FROM A
Run Code Online (Sandbox Code Playgroud)
虽然这个给出错误(关键字'DECLARE'附近的语法不正确):
WITH A AS
(SELECT TOP 1000 *
FROM dbo.SomeTable)
DECLARE @dt DATETIME
SET @dt = GETDATE()
SELECT * FROM A
PRINT DATEDIFF(SS,GETDATE(),@dt)
Run Code Online (Sandbox Code Playgroud)
为什么?
做就是了
DECLARE @dt DATETIME;
SET @dt = GETDATE();
WITH A
AS (SELECT TOP 1000 *
FROM dbo.SomeTable)
SELECT *
FROM A;
PRINT DATEDIFF(SS, GETDATE(), @dt);
Run Code Online (Sandbox Code Playgroud)
CTE定义后唯一有效的东西是使用它的单个语句