我们如何使用单个MySQL UPDATE语句更新多行上的列值?

如果WHERE子句中指定的条件与多行匹配,则可以在单个UPDATE语句中更新多行的列值。在这种情况下,SET子句将应用于所有匹配的行。

示例

假设我们有一个表“招标”如下-

mysql> Select * from tender;

+-----------+---------+------+
| tender_id | company | rate |
+-----------+---------+------+
| 200       | ABC     | 1000 |
| 300       | ABD     | 5000 |
| 301       | ABE     | 6000 |
| 302       | ABF     | 2500 |
| 303       | ABG     | 2600 |
+-----------+---------+------+

5 rows in set (0.00 sec)

现在,如果我们要更新“ rate”列,其中“ tender_id”大于或等于300,则可以使用以下查询-

mysql> UPDATE tender SET rate = rate + 1000 WHERE tender_id >= 300;
Rows matched: 4 Changed: 4 Warnings: 0

mysql> Select * from tender;

+-----------+---------+------+
| tender_id | company | rate |
+-----------+---------+------+
| 200       | ABC     | 1000 |
| 300       | ABD     | 6000 |
| 301       | ABE     | 7000 |
| 302       | ABF     | 3500 |
| 303       | ABG     | 3600 |
+-----------+---------+------+

5 rows in set (0.00 sec)

我们可以从上述结果集中观察到,tender_id> = 300的多行值已更新。

猜你喜欢