4.6.2 创建表变量来保存临时结果集
来源:互联网 发布:大ip什么意思网络用语 编辑:程序博客网 时间:2024/04/28 20:58
创建表变量的语法和创建表的相似,不同的是使用DECLARE关键字,并且表名有@符号前缀:
- DECLARE @TableName TABLE
- (column_name <data_type> [ NULL | NOT NULL ] [ ,...n ] )
在这个示例中,使用表变量的方式和前面技巧中使用临时表的方式相似。这个示例演示实现的不同(包括不显式地DROP表的方法):
- DECLARE @ProductCostStatistics TABLE
- ( ProductID int NOT NULL PRIMARY KEY,
- AvgStandardCost money NOT NULL,
- ProductCount int NOT NULL)
- INSERT @ProductCostStatistics
- (ProductID, AvgStandardCost, ProductCount)
- SELECT ProductID,
- AVG(StandardCost) AvgStandardCost,
- COUNT(ProductID) Rowcnt
- FROM Production.ProductCostHistory
- GROUP BY ProductID
- SELECT TOP 3 *
- FROM @ProductCostStatistics
- ORDER BY ProductCount
这个查询返回:
- ProductID AvgStandardCost ProductCount
- 710 3.3963 1
- 709 3.3963 1
- 731 352.1394 1
解析
这个技巧使用表变量的方式和前面技巧使用临时表的方式基本一样。不过,两个技巧还是有重要区别的。
首先,这次的表变量使用DECLARFE @ Tablename TABLE而不是CREATE TABLE来定义。其次,和临时表技巧不同,该技巧在每个语句后面没有GO,因为临时表只能在批处理、存储过程或函数中存在。
在技巧的后面一部分中,像使用普通表一样从表变量插入和查询,不同的是这次使用@tablename格式:
- INSERT @ProductCostStatistics
- ...
- SELECT TOP 3 *
- FROM @ProductCostStatistics
- ...
在示例的最后并不需要使用DROP TABLE,因为在批处理/存储过程/函数执行后表变量就从内存中消失了。
- 4.6.2 创建表变量来保存临时结果集
- 不允许创建临时变量,来交换两个变量
- 使用表变量保存中间结果来简化我们的查询
- 将存储过程执行的结果保存到临时表
- mysql 把select结果保存为临时表,mysql中把查询结果输出到临时表
- mysql 把select结果保存为临时表,mysql中把查询结果输出到临时表
- oracle复制表结果与数据,以及创建临时表
- mysql创建临时表,将查询结果插入已有表中
- sql从查询结果创建一个临时表
- sqlserver 中临时表、临时变量和with as关键词创建“临时表”的区别
- 游标的结果集放入临时表
- pwd结果保存到变量
- 使用联合(UNION)来代替手动创建的临时表
- 临时表和表变量的重复创建问题
- 在内存中创建临时表和表变量
- 交换变量(不允许创建临时变量)
- 创建临时表,大数据的临时表与小数据量的表变量
- 动态创建临时表,根据变量动态命名临时表表名
- 如何修改skype数据文件(聊天记录)的路径
- 给页面中功能点加上快捷键
- Java对数据库进行事务处理(批量删除操作)
- java文件打包下载
- 一些小东西- 二分,海伦公式,最大公约数,扩展欧几里德,并查集,优先队列,求x!中p的个数
- 4.6.2 创建表变量来保存临时结果集
- eclipse更新ADT为20.0.2之后发现不能new android application project
- 在GNU/LINUX系统下,将root帐号的邮件转到到其它用户/邮箱?
- C#中 for与foreach的效率比较
- 有用的linux命令,时时勤拂拭,呵呵
- 小巧通用的div弹出框
- 黑马程序员C#常用的异常处理总结
- cocos2d-x CCFlipX的使用
- 欧元区风险担忧情绪依然存在,美元震荡上扬