如何在单条 MySQL UPDATE 语句中更新多行中的列值?


如果 WHERE 子句中指定的条件匹配多行,那么可以对多行中的列值进行更新。在这种情况下,SET 子句将应用于所有匹配的行。

示例

我们有一张表格称为“tender”,如下所示 −

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)

现在,如果我们需要更新 tender_id 大于或等于 300 的“rate”列,可以使用以下查询 −

mysql> UPDATE tender SET rate = rate + 1000 WHERE tender_id >= 300;
Query OK, 4 rows affected (0.07 sec)
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 的多行中的值已被更新。

更新于: 20-6 月 - 2020

4 千次浏览

开启您的职业生涯

通过完成课程进行认证

开始
广告