通用表表达式 (CTE) 和临时表有什么区别?我什么时候应该使用一个?
CTE
WITH cte (Column1, Column2, Column3)
AS
(
SELECT Column1, Column2, Column3
FROM SomeTable
)
SELECT * FROM cte
Run Code Online (Sandbox Code Playgroud)
临时表
SELECT Column1, Column2, Column3
INTO #tmpTable
FROM SomeTable
SELECT * FROM #tmpTable
Run Code Online (Sandbox Code Playgroud) 我们来玩乐透吧!
好的。我有一个numbers
80 行(数字 1-80)的表:
create table dbo.numbers (knum tinyint primary key identity);
Run Code Online (Sandbox Code Playgroud)
我有一张桌子,上面有drawid
,每个数字都画出来了。
create table dbo.draws (drawid int, drawnumber tinyint);
Run Code Online (Sandbox Code Playgroud)
现在,鉴于该draws
表可能包含以下数据:
drawid drawnumber
1 10
1 36
1 54
1 75
2 9
2 45
2 46
2 72
Run Code Online (Sandbox Code Playgroud)
我想知道最后一次出现每种可能的三数排列是什么时候。
我正在使用这个:
declare @curdraw int
select @curdraw = max( drawid)-100 from draws;
select TOP 10 K1,K2,K3, @curdraw-max(d1.drawid) from THREES
inner join DrawNumbers d1 WITH (NOLOCK) ON K1 = D1.DRAWNUMBER
INNER JOIN DRAWNUMBERS D2 WITH (NOLOCK) …
Run Code Online (Sandbox Code Playgroud)