永发信息网

sql如何创建临时表

答案:2  悬赏:40  手机版
解决时间 2021-02-01 05:55
sql如何创建临时表
最佳答案
网上其实很多相关文章,你可以搜一下,并不一定需要在这里提问。
转帖一篇给你吧

drop table #Tmp --删除临时表#Tmp
create table #Tmp --创建临时表#Tmp
(
ID int IDENTITY (1,1) not null, --创建列ID,并且每次新增一条记录就会加1
WokNo varchar(50),
primary key (ID) --定义ID为临时表#Tmp的主键
);
Select * from #Tmp --查询临时表的数据
truncate table #Tmp --清空临时表的所有数据和约束

相关例子:

Declare @Wokno Varchar(500) --用来记录职工号
Declare @Str NVarchar(4000) --用来存放查询语句
Declare @Count int --求出总记录数
Declare @i int
Set @i = 0
Select @Count = Count(Distinct(Wokno)) from #Tmp
While @i < @Count
Begin
Set @Str = 'Select top 1 @Wokno = WokNo from #Tmp Where id not in (Select top ' + Str(@i) + 'id from #Tmp)'
Exec Sp_ExecuteSql @Str,N'@WokNo Varchar(500) OutPut',@WokNo Output
Select @WokNo,@i --一行一行把职工号显示出来
Set @i = @i + 1
End

临时表
可以创建本地和全局临时表。本地临时表仅在当前会话中可见;全局临时表在所有会话中都可见。
本地临时表的名称前面有一个编号符 (#table_name),而全局临时表的名称前面有两个编号符 (##table_name)。

SQL 语句使用 CREATE TABLE 语句中为 table_name 指定的名称引用临时表:

CREATE TABLE #MyTempTable (cola INT PRIMARY KEY)
INSERT INTO #MyTempTable VALUES (1)

如果本地临时表由存储过程创建或由多个用户同时执行的应用程序创建,则 SQL Server 必须能够区分由不同用户创建的表。为此,SQL
Server 在内部为每个本地临时表的表名追加一个数字后缀。存储在 tempdb 数据库的 sysobjects 表中的临时表,其全名由
CREATE TABLE 语句中指定的表名和系统生成的数字后缀组成。为了允许追加后缀,为本地临时表指定的表名 table_name 不能超过
116 个字符。

除非使用 DROP TABLE 语句显式除去临时表,否则临时表将在退出其作用域时由系统自动除去:

当存储过程完成时,将自动除去在存储过程中创建的本地临时表。由创建表的存储过程执行的所有嵌套存储过程都可以引用此表。但调用创建此表的存储过程的进程无法引用此表。

所有其它本地临时表在当前会话结束时自动除去。

全局临时表在创建此表的会话结束且其它任务停止对其引用时自动除去。任务与表之间的关联只在单个 Transact-SQL 语句的生存周期内保持。换言之,当创建全局临时表的会话结束时,最后一条引用此表的 Transact-SQL 语句完成后,将自动除去此表。

存储过程或触发器中创建的本地临时表与在调用存储过程或触发器之前创建的同名临时表不同。如果查询引用临时表,而同时有两个同名的临时表,则不定义针对哪
个表解析该查询。嵌套存储过程同样可以创建与调用它的存储过程所创建的临时表同名的临时表。嵌套存储过程中对表名的所有引用都被解释为是针对该嵌套过程所
创建的表,例如:

CREATE PROCEDURE Test2
AS
CREATE TABLE #t(x INT PRIMARY KEY)
INSERT INTO #t VALUES (2)
SELECT Test2Col = x FROM #t
GO
CREATE PROCEDURE Test1
AS
CREATE TABLE #t(x INT PRIMARY KEY)
INSERT INTO #t VALUES (1)
SELECt Test1Col = x FROM #t
EXEC Test2
GO
CREATE TABLE #t(x INT PRIMARY KEY)
INSERT INTO #t VALUES (99)
GO
EXEC Test1
GO

下面是结果集:

(1 row(s) affected)

Test1Col
-----------
1

(1 row(s) affected)

Test2Col
-----------
2

当创建本地或全局临时表时,CREATE TABLE 语法支持除 FOREIGN KEY 约束以外的其它所有约束定义。如果在临时表中指定
FOREIGN KEY 约束,该语句将返回警告信息,指出此约束已被忽略,表仍会创建,但不具有 FOREIGN KEY 约束。在 FOREIGN
KEY 约束中不能引用临时表。

考虑使用表变量而不使用临时表。当需要在临时表上显式地创建索引时,或多个存储过程或函数需要使用表值时,临时表很有用。通常,表变量提供更有效的查询处理。
全部回答

假如你的多表查询是 select * from 表 where 条件

那么你要的语句就是

select * into #temp from 表 where 条件

这里很简单就可以完成 在你的查询出来的列名 和from之间 这里是select *和from 你的可能不是

添加 into #你的临时表名 其他都不做改动

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
英才教育地址有知道的么?有点事想过去
在windows上怎么安装zfs文件系统
果蝇的眼色由一对等位基因(A、a)控制。在纯种
逆战500一个抽奖抽到永久视频
文博教育地址在什么地方,想过去办事
犄里旯旮的意思是什么啊?知道的请说下!
电脑开机一直短促的滴滴
贝吉塔与孙悟空哪个厉害?(不是超级赛亚人)
博琼艺术培训中心地址有知道的么?有点事想过
【宇宙吸引力法则】宇宙中真的存在人思想的“
雪缘电脑培训地址在什么地方,想过去办事
2013款奥德赛和2014款广本奥德赛的区别
离群的意思是什么啊?知道的请说下!
无机结合料稳定基层施工中,采用中心站集中拌
霍启山霍启刚霍启仁是是同父同母的亲兄弟吗
推荐资讯
肖秀荣在哪个考研机构
Y388地址有知道的么?有点事想过去
一个男生拿围巾我洗,忘记给他,好久以后我问
番禺旧水坑丰达电机厂
风尚地址在哪,我要去那里办事
黄山风景区工商行政管理局云谷工商行政管理局
凡偶近器的意思是什么啊?知道的请说下!
金刚砂轮磨铁用什么冷却液
江苏银行(徐州苏堤支行)(苏堤北路河畔花城底
句容市博客网咖地址有知道的么?有点事想过去
游丽的意思是什么啊?知道的请说下!
辽宁交警违章查询系统怎么查
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?