基于其他列的MySQL更新列

时间:2018-06-23 06:21:21

标签: mysql sql sql-update

我有这张桌子:

table_a
+----+--------+
| id | status |
+----+--------+
| 10 | ERROR  |
+----+--------+

我也有这张桌子:

table_b
+------------+----------------+
| trading_id | trading_status |
+------------+----------------+
|         10 | CLOSED         |
+------------+----------------+

如何基于UPDATEtable_a.status table_b.trading_status,以便结果如下:

table_a
+----+--------+
| id | status |
+----+--------+
| 10 | CLOSED |
+----+--------+

2 个答案:

答案 0 :(得分:2)

尝试一下:

UPDATE table_a
SET status = COALESCE((SELECT trading_status
                       FROM table_b 
                       WHERE trading_id = table_a.id), table_a.status)

以上查询假设table_b中最多有一条记录与table_a的每条记录匹配。

Demo here

答案 1 :(得分:2)

您可以使用update-join语法:

UPDATE table_a
JOIN   table_b ON table_a.id = table_b.id
SET    table_a.status = table_b.trading_status