由多个不同字段的表的字段创建一个新表

Kenvle 2010-01-14 05:11:27
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
。。。。。。。。。。

请问这个该如何实现啊?
...全文
132 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
if object_id('tb1') is not null
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
Kenvle 2010-01-15
  • 打赏
  • 举报
回复
还是出错啊


消息 2705,级别 16,状态 3,第 1 行
各表中的列名必须唯一。在表 'tb' 中多次指定了列名 'Id'。
poxi_nick 2010-01-15
  • 打赏
  • 举报
回复
select * from table_1 inner join table_2 on table_1.id=table_2.id
Kenvle 2010-01-15
  • 打赏
  • 举报
回复
谢谢楼上各位!

我用了这条语句执行,基本可以达到要求,但是有一个问题,如果两个表中有相同的字段则会出现错误,如何实现有重复字段则把后面链接的表中重复字段删除,或者是可以手动指定每个表中哪几个字段不连接进来,谢谢。

select * into tb from a,b WHERE a.ID=b.ID
yananguo_1985 2010-01-14
  • 打赏
  • 举报
回复

select A.*,B.字段3,B.字段4 into [新表] from #A A,#B B WHERE A.ID=B.ID and 1<>1

ACMAIN_CHM 2010-01-14
  • 打赏
  • 举报
回复
select *
from a inner jon b on a.id=b.id
NginxL 2010-01-14
  • 打赏
  • 举报
回复
学习
andysun88 2010-01-14
  • 打赏
  • 举报
回复

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)
SQL77 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 kenvle 的回复:]
能不能不手动写字段啊,因为每个表里都是上百的字段
[/Quote]

动态执行吧,

SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID('TB')
用字符拼接
黄_瓜 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 kenvle 的回复:]
能不能不手动写字段啊,因为每个表里都是上百的字段
[/Quote]
如果字段都要且保证字段不重复
就用*代替
select * into tb from A,B
Kenvle 2010-01-14
  • 打赏
  • 举报
回复
能不能不手动写字段啊,因为每个表里都是上百的字段
借我那把枪吧 2010-01-14
  • 打赏
  • 举报
回复
你要创建一个表,就插入一个临时表也行,晕,如果你有的,就直接INSERT TB SELECT ....

黄_瓜 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kenvle 的回复:]
是要创建一个表,不是查询出结果
[/Quote]
--1
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
--小F-- 2010-01-14
  • 打赏
  • 举报
回复
select ... into

insert into??
SQL77 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kenvle 的回复:]
是要创建一个表,不是查询出结果
[/Quote]
你要创建一个表,就插入一个临时表也行,晕,如果你有的,就直接INSERT TB SELECT ....
andysun88 2010-01-14
  • 打赏
  • 举报
回复

SELECT A.*,B.* FROM A,B WHERE A.ID=B.ID
黄_瓜 2010-01-14
  • 打赏
  • 举报
回复
select a.id ,     a.字段1 , a.字段2 ,   b.字段3 , b.字段4  from a
left join b
on a.id =b.id
SQL77 2010-01-14
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- 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 行)


*/
Kenvle 2010-01-14
  • 打赏
  • 举报
回复
是要创建一个表,不是查询出结果
Kenvle 2010-01-14
  • 打赏
  • 举报
回复
更正一下

A表如下:

id 字段1 字段2
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
加载更多回复(2)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧