求SQL语句

ezones 2004-08-30 10:36:10
有两个表
a(aa,bb)
b(xx,aa,bb)
我想把a表中的所有记录Copy到b表的字段aa和bb,然后在b中的xx上写入每条记录对应的编号
...全文
111 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ezones 2004-08-30
  • 打赏
  • 举报
回复
对啊b表没有数据
zjcxc 元老 2004-08-30
  • 打赏
  • 举报
回复
--如果b表已经有数据,现在的编号要从最大的编号+1开始编,则用:

--先插入数据
insert b(xx,aa,bb) select 0,aa,bb from a

--再生成xx
declare @i int
selectt @i=max(xx) from b --这里原来写错了.
update b set @i=@i+1,xx=@i
where xx=0
zjcxc 元老 2004-08-30
  • 打赏
  • 举报
回复
--如果b表的xx是主键/唯一约束,则只有用临时表了

select id=identity(int),aa,bb into #t from a

insert bb(xx,aa,bb) select a.id+b.id,a.aa,a.bb
from #t a,(select id=max(xx) from b)b

drop table #t
老宛 2004-08-30
  • 打赏
  • 举报
回复
to:zilang(随意的风)
我理解的楼主的意思是b表没有数据,如果有数据,楼主应该指明
zjcxc 元老 2004-08-30
  • 打赏
  • 举报
回复
--如果b表已经有数据,现在的编号要从最大的编号+1开始编,则用:

--先插入数据
insert b(xx,aa,bb) select 0,aa,bb from a

--再生成xx
declare @i int
selectt @i=max(xx0 from b
update b set @i=@i+1,xx=@i
where xx=0
zjcxc 元老 2004-08-30
  • 打赏
  • 举报
回复
--b表的xx没有设置主键/唯一约束吧?

--先插入数据
insert b(xx,aa,bb) select 0,aa,bb from a

--再生成xx
declare @i int
set @i=0
update b set @i=@i+1,xx=@i
zilang 2004-08-30
  • 打赏
  • 举报
回复
wanyingsong:

如果#t的编号和b中的编号重复怎么办?
ezones 2004-08-30
  • 打赏
  • 举报
回复
写成存储过程
老宛 2004-08-30
  • 打赏
  • 举报
回复
如果编号是int那就用我3楼的方法,如果编号为字符型,就改一下
select identity(int,1,1) as xx,aa,bb into #t from a
insert into b (xx,aa,bb) select cast(xx as varchar),aa,bb from #t
drop table #t
ezones 2004-08-30
  • 打赏
  • 举报
回复
xx的编号不是自动生成的,
就是说第一条记录就插入编号"1" 第二条记录插入编号"2"
gaodongsheng 2004-08-30
  • 打赏
  • 举报
回复
如果xx不是自动生成的
declare @i int
insert into b(xx,bb,aa) select @i=@i+1,bb,aa from a
LoveSQL 2004-08-30
  • 打赏
  • 举报
回复
在b中的xx上写入每条记录对应的编号?
不知道你的编号有什么规律还是从别的表关联得到,如果是关联得到,可以用update
update b
set xx=..
from b,其他表
where ....
老宛 2004-08-30
  • 打赏
  • 举报
回复


select identity(int,1,1) as xx,aa,bb into #t from a
insert into b (xx,aa,bb) select xx,aa,bb from #t
drop table #t
yesterday2000 2004-08-30
  • 打赏
  • 举报
回复
XX的编号是自动生成的吗?
如果是
insert into b (aa,bb)
select aa,bb from a
老宛 2004-08-30
  • 打赏
  • 举报
回复


select identity(int,1,1) as xx,aa,bb into #t from a
insert into b (xx,aa,bb) select xx,aa,bb from #t
drop table #t
gaodongsheng 2004-08-30
  • 打赏
  • 举报
回复
给分吧
declare @i int
set @i=0
insert into b(xx,aa,bb) select @i=@i+1,aa,bb from a
LoveSQL 2004-08-30
  • 打赏
  • 举报
回复
insert into b(aa,bb) select aa,bb from a

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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