Mysql:根据另一个列值更新列

时间:2018-11-14 23:07:33

标签: mysql

我的数据库中大约有300条记录,其中某列中的数据无效。无效的列引用的是user_id而不是ID码(如表所示)。

我正在尝试将new_foreign_dealer_id列中的user_id设置为old_dealer_id_to_dealer =

因此在表中,具有值206的user_id将搜索204并将206的行列替换为204的new_foreign_dealer_id

之前的用户表:

+---------+-----------------------+-------------------------+
| user_id | new_foreign_dealer_id | old_dealer_id_to_delete |
+---------+-----------------------+-------------------------+
|     200 | 5                     | 02-000012               |
|     204 | 8                     | 02-000097               |
|     206 | 0 (invalid)           | 204 (referneces user_id |
+---------+-----------------------+-------------------------+

之后的用户表:

+---------+-----------------------+-------------------------+
| user_id | new_foreign_dealer_id | old_dealer_id_to_delete |
+---------+-----------------------+-------------------------+
|     200 | 5                     | 02-000012               |
|     204 | 8                     | 02-000097               |
|     206 | 8                     | 204 (referneces user_id |
+---------+-----------------------+-------------------------+

这是我尝试过的查询

UPDATE users SET dealer_id_foreign = dealer_id_foreign WHERE dealer_id = user_id

注意:我查询中的列名称正确。 ASCII列是为了清楚起见。

edit:最终使用PHP实现了这一目标。仍然对sql答案感兴趣

2 个答案:

答案 0 :(得分:1)

http://sqlfiddle.com/#!9/6e5a88/1

UPDATE my_table t
JOIN my_table new
ON t.old_dealer_id_to_delete = new.user_id
   AND t.new_foreign_dealer_id = 0
SET t.new_foreign_dealer_id = new.new_foreign_dealer_id;

答案 1 :(得分:0)

尝试一下,我还没有测试过,所以请先测试一下

o1.getAlbumName().compareTo(o2.getAlbumName());