mysql - Mysql:根据另一列值更新列
问题描述
我的数据库中有大约 300 条记录,它们的列中有无效数据。无效的列引用 user_id 而不是 id 代码(如表中所示)。
我正在尝试将= 设置为列new_foreign_dealer_id
内的 user_idold_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 列是为了清楚起见。
编辑:最终使用 PHP 来实现这一点。仍然对sql答案感兴趣
解决方案
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;
推荐阅读
- sql - 基于癌症发生列的患者计数
- react-native - 为什么 Youtube 视频没有在反应原生移动应用程序的 Webview 中显示?
- java - 使用 QueryDSL 和 PostgreSQL 数据库与 GroupBy 汇总
- odoo - 如何根据 Odoo 11 中的状态隐藏编辑按钮
- variables - 如何在 Informix 中检索活动 SAVEPOINT 的名称
- reactjs - 错误:在使用 react-redux 时,Provider 的钩子调用无效
- tensorflow - 对象检测:锚框的纵横比和比例
- c# - 命名空间“Microsoft”中不存在类型或命名空间名称“ServiceBus”?
- python - 我将 python 从 3.5 更新到 3.7,现在找不到 manage.py
- python - Pyinstaller 依赖项的许可证