在开发过程中,很多时候要把结果集存放到临时表中,常用的方法有两种。
1.INSERT INTO SELECT语句
语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1
要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。
2.SELECT INTO FROM语句
语句形式为:SELECT vale1, value2 into Table2 from Table1
要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。
批量删除
delete from table where id in (xxxxxxxx) 或者delete from table where id in ( select id from table where enabled = 0)
INNER JOIN 连接三个数据表的用法:
SELECT (表?).字段,(表?).字段 。。。 FROM (表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号
如何使用EXEC里面创建的临时表
当我这样创建临时表的时候可以使用:
select * into #tmp from TableA;
select * from #tmp;
但是这样创建临时表却不可以使用:
EXEC ('select * into #tmp from TableA');
select * into #tmp from TableA;
------解决方案--------------------
把SELECT..INTO 也写到EXEC里面去。
------解决方案--------------------
如果后边还有用到临时表处理的东西,也写到exec中去。
------解决方案--------------------
EXEC ('select * into #tmp from TableA;select * from #tmp')
一. SELECT INTO
1. 使用select into会自动生成临时表,不需要事先创建
select * into #temp from sysobjects
01. 把存储过程结果集SELECT INTO到临时表
select * from #temp
2. 如果当前会话中,已存在同名的临时表
select * into #temp from sysobjects
再次运行,则会报错提示:数