当前位置: 代码迷 >> Sql Server >> MySQL上传多条数据的有关问题
  详细解决方案

MySQL上传多条数据的有关问题

热度:84   发布时间:2016-04-24 09:16:19.0
MySQL上传多条数据的问题
现在有一张表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



  相关解决方案