请问怎样将A表数据插入B组列2

kangyonglong 2016-03-05 12:39:44
A表
列1
s001
s002
s003
s004
B表
列1 列2 列3
1 null 23.5
2 null 43.5
3 null 53.5
4 null 63.5
...全文
153 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_33809721 2016-03-07
  • 打赏
  • 举报
回复
引用 7 楼 qq_33809721 的回复:
[quote=引用 1 楼 lzp4881 的回复:] update B set 列2=A.列1 from A,B
update B set 列2=A.列1 from A 就可以了啊,为啥还要inner join B? 试了一下是可以把表B的列2替换成表A的列1的[/quote] 好吧,我错了,才发现这样只是把表B的列2里面所有值都替换成了‘S001'。。。
xiaoxiangqing 2016-03-07
  • 打赏
  • 举报
回复
两个表这间的关系,要写上吧
qq_33809721 2016-03-07
  • 打赏
  • 举报
回复
引用 1 楼 lzp4881 的回复:
update B set 列2=A.列1 from A,B
update B set 列2=A.列1 from A 就可以了啊,为啥还要inner join B? 试了一下是可以把表B的列2替换成表A的列1的
  • 打赏
  • 举报
回复
declare @t int 
set @t=23

select 's'+right ('00000'+cast(@t as CHAR(3)),4)
这样更简单
  • 打赏
  • 举报
回复
update B set  列2='s'+case when len(cast(列2 as CHAR(3)))=1 then '00'+cast(列2 as CHAR(3))
 when len(cast(列2 as CHAR(3)))=2 then '0'+cast(列2 as CHAR(3)) else cast(列2 as CHAR(3)) end from A 
你的意思是这样吗?根据b表列1,列2要改成 S007 这样的样式,s后面的数字跟着列一走?
  • 打赏
  • 举报
回复


with tb_A(列1)
as(
select 's001' union all
select 's002' union all
select 's003' union all
select 's004'),
tb_B(列1,列2,    列3)
as(
select 1,       null,    23.5 union all
select 2,       null,    43.5 union all
select 3 ,      null ,   53.5 union all
select 4  ,     null  ,  63.5
)
select t2.列1,t1.列1,t2.列3 from (select row=ROW_NUMBER()over(order by getdate()),* from tb_A)t1,(select row=ROW_NUMBER()over(order by getdate()),* from tb_B)t2 where t1.row=t2.row
唐诗三百首 2016-03-05
  • 打赏
  • 举报
回复
按2楼中LZ提供的测试数据,希望结果是什么?
kangyonglong 2016-03-05
  • 打赏
  • 举报
回复
这个貌似不太对额,我实际应用到的还是A表是个子查询(这个不用管),我update之后发现只能是a表第一个值填充了b表列2所有值, create table A( ls varchar(2) ) alter table B( s varchar(2), sa varchar(2), ss varchar(2), ) insert into b(s,ss) values('f','gs'); insert into b(s,ss) values('a','3'); insert into b(s,ss) values('x','g4'); insert into b(s,ss) values('12','g2'); insert into b(s,ss) values('12','g2'); insert into b(s,ss) values('3','2s'); declare @s varchar(3) set @s='0' begin while @s<15 begin insert into a(ls) values(@s); set @s=@s+1 end end update b set sa=ls from A,B 以上是我的代码,我的结果是这样的: f 0 gs a 0 3 f 0 gs a 0 3 f 0 gs a 0 3 x 0 g4 12 0 g2 3 0 2s f 0 gs a 0 3 x 0 g4 12 0 g2 12 0 g2 3 0 2s 感觉不太对,但还是谢谢您
lzp4881 2016-03-05
  • 打赏
  • 举报
回复
update B set 列2=A.列1 from A,B

34,593

社区成员

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

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