A表如下:id 字段1 字段2
1 值1 值2
2 值3 值3
。A表如下:id 字段3 字段4
1 值5 值6
2 值7 值8
。根据这两个表的字段生成一个新的表,新表的字段则是所有A、B表,根据ID来进行关联,即如下表id 字段1 字段2 字段3 字段4
1 值1 值2 值5 值6
2 值3 值3 值7 值8
。请问这个该如何实现啊?
1 值1 值2
2 值3 值3
。A表如下:id 字段3 字段4
1 值5 值6
2 值7 值8
。根据这两个表的字段生成一个新的表,新表的字段则是所有A、B表,根据ID来进行关联,即如下表id 字段1 字段2 字段3 字段4
1 值1 值2 值5 值6
2 值3 值3 值7 值8
。请问这个该如何实现啊?
1 值1 值2
2 值3 值4
。 B表如下: id 字段3 字段4
1 值5 值6
2 值7 值8
。 根据这两个表的字段生成一个新的表,新表的字段则是所有A、B表,根据ID来进行关联,即如下表 id 字段1 字段2 字段3 字段4
1 值1 值2 值5 值6
2 值3 值4 值7 值8
-- Author :SQL77(只为思齐老)
-- Date :2010-01-14 17:15:07
-- Version:
-- Microsoft SQL Server 2000 - 8.00.194 (Intel X86)
-- Aug 6 2000 00:57:48
-- Copyright (c) 1988-2000 Microsoft Corporation
-- Desktop Engine on Windows NT 5.1 (Build 2600: Service Pack 3)
--
----------------------------------------------------------------
--> 测试数据:#A
if object_id('tempdb.dbo.#A') is not null drop table #A
go
create table #A([id] int,[字段1] varchar(3),[字段2] varchar(3))
insert #A
select 1,'值1','值2' union all
select 2,'值3','值4'
--> 测试数据:#B
if object_id('tempdb.dbo.#B') is not null drop table #B
go
create table #B([id] int,[字段3] varchar(3),[字段4] varchar(3))
insert #B
select 1,'值5','值6' union all
select 2,'值7','值8'
--------------开始查询--------------------------select A.*,B.字段3,B.字段4 from #A A,#B B WHERE A.ID=B.ID----------------结果----------------------------
/* (所影响的行数为 2 行)
(所影响的行数为 2 行)id 字段1 字段2 字段3 字段4
----------- ---- ---- ---- ----
1 值1 值2 值5 值6
2 值3 值4 值7 值8(所影响的行数为 2 行)
*/
left join b
on a.id =b.id
SELECT A.*,B.* FROM A,B WHERE A.ID=B.ID
select a.id , a.字段1 , a.字段2 , b.字段3 , b.字段4 into newTb from a,b
--2
insert into newTb
select a.id , a.字段1 , a.字段2 , b.字段3 , b.字段4 from a,b
就用*代替
select * into tb from A,B
动态执行吧,SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID('TB')
用字符拼接
declare @ExecSql nvarchar(max)set @ExecSql='Create Table T_ResultTable('
select @ExecSql = @ExecSql + ''+aa.name +' '+aa.Typename+', ' from
( select Distinct a.Name,b.name as Typename from sys.columns a
left join sys.types b on a.system_type_id = b.system_type_id
where object_id = object_id('A1') or object_id = object_id('B1')
) aa
set @ExecSql = @ExecSql +')'
--print @ExecSql
exec(@ExecSql)
from a inner jon b on a.id=b.id
select A.*,B.字段3,B.字段4 into [新表] from #A A,#B B WHERE A.ID=B.ID and 1<>1
drop table tb1
go
create table tb1(iid int, 字段1 varchar(10), 字段2 varchar(10))
insert into tb1
select 1 , '值1' , '值2' union all
select 2 , '值3' , '值3'
if object_id('tb2') is not null
drop table tb2
go
create table tb2(iid int, 字段3 varchar(10), 字段4 varchar(10))
insert into tb2
select 1 , '值5' , '值6' union all
select 2 , '值7' , '值8'
select * from tb1 t1,tb2 t2 where t1.iid=t2.iid结果:
1 值1 值2 1 值5 值6
2 值3 值3 2 值7 值8
消息 2705,级别 16,状态 3,第 1 行
各表中的列名必须唯一。在表 'tb' 中多次指定了列名 'Id'。