首页 新闻 会员 周边 捐助

MySQL 两个表关联,但两个表都有关联字段重复的数据时,怎么做到一一对应,对应上就可以了

0
悬赏园豆:10 [待解决问题]

现在情况大概是有两个资产表,表a,表b,各自有唯一id,现在想通过a,b表的name字段关联,把b表的code字段值放到a表的old_code字段里面;
但是a,b表都有批量添加的name相同的资产,这种情况下怎么能做到能对应上的让他们一一对应呢?

白鲟的主页 白鲟 | 初学一级 | 园豆:29
提问于:2021-08-02 11:58
< >
分享
所有回答(2)
0

不改变两个表,新建表c,专门用来做 a、b表的关联。
事务:
a、b都添加成功,在c表添加关联记录。
放到a表里面,程序改动会是 巨大的吧?

快乐的欧阳天美1114 | 园豆:4004 (老鸟四级) | 2021-08-02 13:01

可是在a,b表都有批量添加的name相同的资产的情况下,通过name关联会得到交叉关联的多对过的数据,不是一对一的数据

支持(0) 反对(0) 白鲟 | 园豆:29 (初学一级) | 2021-08-02 15:38

@白鲟: name不是唯一的?

支持(0) 反对(0) 快乐的欧阳天美1114 | 园豆:4004 (老鸟四级) | 2021-08-02 16:12

@快乐的凡人721: 对,麻烦就出在这了😂

支持(0) 反对(0) 白鲟 | 园豆:29 (初学一级) | 2021-08-02 16:13

@白鲟:
1、存code列表;
2、无解,say NO。

支持(0) 反对(0) 快乐的欧阳天美1114 | 园豆:4004 (老鸟四级) | 2021-08-02 16:36

@快乐的凡人721: 存code列表能具体说一下吗?

支持(0) 反对(0) 白鲟 | 园豆:29 (初学一级) | 2021-08-02 16:58

@白鲟: a表的old_code字段 设计为存 字符串——长度看你们使用情况,b表的code用都好分隔开,存进a表

支持(0) 反对(0) 快乐的欧阳天美1114 | 园豆:4004 (老鸟四级) | 2021-08-02 17:48
0

我想问你是怎么知道一一对应的?你怎么知道a表哪条记录对应b表哪条记录?
我想你如果光看name的话肯定区分不出来。你就用你能区分的字段来进行关联,不只是name。

super超人 | 园豆:209 (菜鸟二级) | 2021-08-04 15:10

并不是一一对应,每条数据都可能对应多条;但我想做到让它们每一条只对应一条能对上的

支持(0) 反对(0) 白鲟 | 园豆:29 (初学一级) | 2021-08-16 16:20

@白鲟: 你没表贴出来,我也不好理解。我全当你name相同的记录code也相同了。
update test_groupby_b a
LEFT JOIN
(select max(t.id),t.name,t.code from test_groupby t GROUP BY t.name) b on a.name = b.name
set a.old_code = b.code;
其中test_groupby_b是你的a表,有id,name,old_code。test_groupby是你的b表,有id,name,code。
你想把b表的用name关联到code更新到a表的old_code。就用上面的语句。

支持(0) 反对(0) super超人 | 园豆:209 (菜鸟二级) | 2021-08-16 17:12

@super超人:

你这是把重复的都去掉了呀😂;打个比方,有10个男的和10个女的,我需要他们组队成10组男女,谁和谁组都行,但每个人只能和一个异性组队

支持(0) 反对(0) 白鲟 | 园豆:29 (初学一级) | 2021-08-16 17:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册