现在有一张表tmp里面只有一列prov,有很多条数据
还有一张表叫mobile,里面建立了一条空列叫sheng行数相同
现在想把tmp里面的数据加到这个空列里来
我用update moblie set sheng=(select prov from tmp);
结果报错,说子查询得到的数据超过1条,这个应该怎么解决
------解决思路----------------------
换个思路吧
Insert Into mobile
Select prov From Tmp
------解决思路----------------------
1.给两个表分别添加新自增列,类型为int,
2.然后执行
update moblie
set sheng =prov
from tmp
where mobile.id = tmp.id
3.删除新增列
其实不用手动添加新列也可以,可以用动态编号,但是代码就比较长了
------解决思路----------------------
给楼主写了一个脚本,moblie与tmp 按当前的存储排序一对一更新
-- drop table moblie,tmp
create table moblie(name varchar(10),sheng varchar(10))
create table tmp(prov varchar(10))
insert into moblie(name)
values('dd'),('y'),('hj'),('bn'),('re'),('hf'),('dfds'),('oio'),('er'),('df')
insert into tmp(prov)
values('43'),('56'),('24'),('65'),('66'),('34'),('7'),('0'),('34'),('33')
-- select * from [dbo].moblie
-- select * from [dbo].tmp
;with moblie2 as(
select row_number()over(order by (select 0)) id,name,sheng from [dbo].moblie
), tmp2 as(
select row_number()over(order by (select 0)) id,prov from [dbo].tmp
)
update a set a.sheng = b.prov
from moblie2 a inner join tmp2 b on a.id=b.id