SQL多表合并

来源:百度知道 编辑:UC知道 时间:2024/05/23 02:26:33
有100个表:table1,table2,...table100 .
结构一样: ID,number .
现在想把他们合并到一张总表中:table_all .
如何实现?

另外,一个一个加的话, 我也知道,代码太多了.我能想到的是用循环语句实现,设定一个 指针 @n 来代表 1 到 100.

谢谢!
谢谢roy_88的解答。另外有有一个问题请赐教:
declare @s nvarchar(4000)
select @s=isnull(@s+' union all select * from ',' select * from ')+quotename(Name) from sysobjects where Name like'table%'
exec(@s)
go
以上的这段代码能实现表的合并,可是怎么能把这个结果放到一个表或者视图中呢?因为后面的程序需要用到这个合并的结果,怎么实现?

感激不尽!

你的表名不能都是1,2,3,4,5排下来的吧?
建总表还不如建视图
create view view_all
as select * from table1 union all
select * from table2 union
……

声明一个很长的字符串变量,然后拼接sql语句。
declare @sql varchar(1000)
declare @n integer
set @sql = 'insert into table_all '
for @n = 1 to 100
set @sql = @sql + 'select * from table' + convert(varchar,@n)
loop

exec(@sql)

这种思路, 语法对不对自己看着办吧。

表名有规律时,用存储过程循环实现

declare @s nvarchar(4000)
select @s=isnull(@s+' union all select * from ',' select * from ')+quotename(Name) from sysobjects where Name like'table%'
exec(@s)
go
--生成表
--用一个视图
create v_allTable
as
select * from table1
union all
select * from table2
union all
..............

你是想合成后的表仍然只有两个字段,但是这些字段的数据包括100张表的?