如何查询mysql两个表联查后有相同字段的更新另外字段值

问题遇到的现象和发生背景

现有2个表,分别为:
data_1014(data_id,fd64)
data_1018(data_n_id,data_id,fd70)

说明:
1、data_1018中的data_id等于data_1014中的data_id
2、data_1014中的data_id是唯一的,不重复。
3、data_1018中的data_id是重复的,有多条。

运行结果及报错内容

子查询有多条数据

我的解答思路和尝试过的方法

UPDATA DATA_1018 SET FD70 = (SELECT FD64 FROM DATA_1014)

我想要达到的结果

只要是data_1018的data_id=data_1014的data_id,那么就update更新 fd70=fd64。

img

用ifnull函数判断查询的结果是否为空,为空则设置为原来的值,否则修改。

UPDATA DATA_1018 t1 SET FD70 = ifnull((SELECT FD64 FROM DATA_1014 where t1.data_id=data_id),FD70);

你罗里吧嗦的说了半天,最重要的匹配条件没说清楚
到底原始数据什么结构,你想要什么结构
很可能根本不需要update,直接过滤掉你不要的数据,只显示你要的数据,不就得了

代码如下我,望采纳

update data_1018 table3 
left join (SELECT table1.data_id,table2.fd64  FROM data_1018 table1 inner join data_1014 table2 on table1.data_id= table2.data_id ) table4 
on table3.data_id = table4.data_id
SET table3.fd70 = table4.fd64

img

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632