我现在有表A,里面存着一些记录
还有表B,C,D,E表作为模板表现在把表A中Flag = 1的记录,创建跟B,C,D,E表结构一样的表,新创建的表名用A表中的字段TName的值,加上'KT'
另,我想用B表作为模板创建起来快些,或许有更好的方法也可以。
本人SQL水平实在有限,求SQL语句
还有表B,C,D,E表作为模板表现在把表A中Flag = 1的记录,创建跟B,C,D,E表结构一样的表,新创建的表名用A表中的字段TName的值,加上'KT'
另,我想用B表作为模板创建起来快些,或许有更好的方法也可以。
本人SQL水平实在有限,求SQL语句
做个循环,生成SQL。然后EXEC执行。
SELECT @S=ISNULL(@S,'')+' SELECT * INTO '+TName+'KT'+' FROM A WHERE Flag = 1 ' FROM A
EXEC(@S)
如果只在数据库端完成所有功能只能用动态执行的方法
如果前后台接合使用, 在前端用循环拼好SQL语句, 再一次性放到后台执行
(
flag int,
Tname varchar(10)
)insert into t_t select 1,'A'
union all select 0,'AA'
union all select 1,'B'
union all select 1,'C'
union all select 1,'D'declare @sql varchar(max)
declare @row int
declare @id int
declare @n int
declare @tablename varchar(100)select ID=identity(int,1,1), tname into #temp from t_t where flag=1
set @row=@@rowcountset @n=1
set @id=1
set @sql=''
set @tablename=''
while(@n<=@row)
begin
print('begin')select @tablename='PK'+ tname from #temp where ID=@id
-------------------B,C,D为模版表,创建表时,只创建表结构------------------------
select @sql=@sql+' select * into ' + @tablename + 'B'+' from B where 1!=1 '
select @sql = @sql + 'select * into ' + @tablename + 'C' + ' from C where 1!=1 '
select @sql = @sql + 'select * into ' + @tablename + 'D' + ' from D where 1!=1 '
select @n=@n+1
select @id=@id+1end
print(@sql)
exec(@sql)
drop table #temp