首页 > 解决方案 > SELECT 后一次 SQL UPDATE 多行

问题描述

我的样本表:

+------------+------------+------+-----+---------+-------+
| Field      | Type       | Null | Key | Default | Extra |
+------------+------------+------+-----+---------+-------+
| id         | bigint(20) | YES  |     | NULL    |       |
| other_id   | bigint(20) | YES  |     | NULL    |       |
| another_id | bigint(20) | YES  |     | NULL    |       |
+------------+------------+------+-----+---------+-------+

+------+----------+------------+
| id   | other_id | another_id |
+------+----------+------------+
|  988 |      102 |       NULL |
|  989 |      103 |       NULL |
|  990 |      104 |       NULL |
|  991 |      105 |       NULL |
|  992 |      106 |       NULL |
|  987 |      101 |       NULL |
+------+----------+------------+

我将如何在一个查询中选择和更新上表,以对每一行执行类似的操作:

UPDATE
    x
SET 
    another_id = 987
WHERE
    id = 987
    AND other_id = 101;
UPDATE
    x
SET 
    another_id = 988
WHERE
    id = 988
    AND other_id = 102

我不想为每一行运行这样的手动更新,并希望一次完成所有操作。

标签: mysqlsql

解决方案


对我来说,您似乎只想将值设置 another_idid

UPDATE
    x
SET 
    another_id = id

other_id如果需要限制更新的行数,可以在 where 子句中提供一系列值:

UPDATE
    x
SET 
    another_id = id
WHERE other_id IN (...) --list the values you want here.

推荐阅读