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

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
。。。。。。。。。。

请问这个该如何实现啊?
...全文
196 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)
数据集可视化效果可参见下方展示。 【数据集概况】 · 检测类别(中文):[弯腰(bending), 躺卧(down), 站立(up)] · 训练集:3240 张 · 验证集:0 张 · 测试集:210 张 · 总计:3450 张 该数据集聚焦于室内居住环境下的人员行为状态识别,通过多角度、多时段的图像采集,全面覆盖了日常生活中常见的身体姿态变化。数据集中包含多种典型动作场景,如站立、弯腰和躺卧等,能够有效支持对个体活动状态的精准判断,适用于智能安防、健康监护及居家行为分析等高价值应用领域。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 100 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9740** mAP50-95 | 0.8780 Precision | 0.9537 Recall | 0.9434 train/box_loss | 0.3695 train/cls_loss | 0.1506 val/box_loss | 0.4416 val/cls_loss | 0.2860 【训练过程分析】 100 轮训练后 mAP50 达到 0.9740,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。mAP50-95 为 0.8780,和 mAP50 差距仅 0.10,框的定位精度也很扎实。 【模型性能评估】 Precision 0.9537、Recall 0.9434,精召双高,模型对弯腰、躺卧、站立的检测能力强。多类检测中,不同类别性能可能有差异,需关注难例类别的现。 【预测效果展示...

22,298

社区成员

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

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