求助:一列数据中某一个是其他数据之和

qq_36260760 2019-07-25 09:56:23
有一个例子,表名:table

id name data
0 河北 50468
1 江西 71429
2 山东 69591
3 宁夏 48825
4 甘肃 96813
5 贵州 55565
6 湖北 72192
7 湖南 90473
8 广西 99914
9 四川 91375
10 全国 null

现在想通过MySQL一段代码实现全国的data=其他0-9的和。。。。

...全文
101 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_36260760 2019-07-25
  • 打赏
  • 举报
回复
用mysql语句实现
qq_36260760 2019-07-25
  • 打赏
  • 举报
回复
name为全国的data = 河北+江西+。。。。。+四川 的data

或者说id为10的data = id为0到9的data 之和
二月十六 2019-07-25
  • 打赏
  • 举报
回复
data=其他0-9 是啥意思?建议楼主描述一下并对应测试数据给出想要的结果
qq_36260760 2019-07-25
  • 打赏
  • 举报
回复

@二月十六 大神,我用这个语句出错的:
update temp set data=(select sum(data) from temp where data is not null) where id=10;

错误提示:1093 - You can't specify target table 'temp' for update in FROM clause。。

可否给点提示?
zhenzhenup 2019-07-25
  • 打赏
  • 举报
回复
UPDATE table A,(SELECT SUM(data) sumdata FROM table WHERE id<10) B SET A.data=B.sumdata WHERE id =10;
二月十六 2019-07-25
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T([id] int,[name] nvarchar(22),[data] int)
Insert #T
select 0,N'河北',50468 union all
select 1,N'江西',71429 union all
select 2,N'山东',69591 union all
select 3,N'宁夏',48825 union all
select 4,N'甘肃',96813 union all
select 5,N'贵州',55565 union all
select 6,N'湖北',72192 union all
select 7,N'湖南',90473 union all
select 8,N'广西',99914 union all
select 9,N'四川',91375 union all
select 10,N'全国',null
Go
--测试数据结束
UPDATE #T SET data=(SELECT SUM(data) FROM #T WHERE id BETWEEN 0 AND 9) WHERE id=10

SELECT * FROM #T

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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