SQL SERVER临时表的使用

SQL SERVER支持3种临时表:

类别
本地临时表
全局临时表
表变量

1.本地临时表(#表名):
只在当前链接中有效,当前链接断开时自动删除表

select * into #LSORDERS FROM ORDERS;
select * from #LSORDERS
--在一个查询窗口中创建临时表后可以检索到,但是如果关闭该查询新建查询,或者另外新建查询检索都会失败

2.全局临时表(##表名):
对当前和其他链接都有效,当前和其他访问过他的链接都断开时自动删除表

CREATE TABLE DBO.##GLOBALS
(
ID SYSNAME NOT NULL PRIMARY KEY,
VAL SQL_VARIANT NOT NULL
);
INSERT INTO DBO.##GLOBALS(ID,VAL) VALUES(N'I',CAST(10 AS INT))
SELECT VAL FROM DBO.##GLOBALS WHERE ID=N'I';

3.表变量:
是一个物理存在的表,表变量仅对创建会话可见,只是对当前批可见。既不对调用堆栈内的内部批可见,也不对会话中后续批可见。

DECLARE @MyOrderTotalsByYear TABLE
(
  orderyear INT NOT NULL PRIMARY KEY,
  qty       INT NOT NULL
);
INSERT INTO @MyOrderTotalsByYear(orderyear, qty)
  SELECT
    YEAR(O.orderdate) AS orderyear,
    SUM(OD.qty) AS qty
  FROM Sales.Orders AS O
    JOIN Sales.OrderDetails AS OD
      ON OD.orderid = O.orderid
  GROUP BY YEAR(orderdate);
SELECT Cur.orderyear, Cur.qty AS curyearqty, Prv.qty AS prvyearqty
FROM @MyOrderTotalsByYear AS Cur
  LEFT OUTER JOIN @MyOrderTotalsByYear AS Prv
    ON Cur.orderyear = Prv.orderyear + 1;
GO


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值