Skip to main content

UPDATE

使用 UPDATE 命令修改表中现有行的值。

info
  • UPDATE 不能修改表的主键列中的数据。

  • UPDATE 后调用 FLUSH 来将更改保存到存储,确保更改被提交并对后续读取可见。

句法

UPDATE table_name
SET { col_name = value, ... | ( col_name, ... ) = ( value, ... ) }
[ WHERE condition ]
[ RETURNING col_name ];

参数

参数或子句描述
table_name要更新行的表。
SET col_name = value将值或表达式的结果分配给特定列。
col_name 不能为主键。
WHERE condition使用返回布尔值的表达式指定要更新的行。此表达式返回 true 的行将被更新。
如果省略 WHERE 子句,表中的所有行都将被更新。条件表达式中支持子查询。
RETURNING根据更新的行返回任意列的值。

示例

taxi_trips 表有三条数据:

SELECT * FROM taxi_trips;
 id | distance |    city     
----+----------+-------------
1 | 16 | Yerba Buena
2 | 23 | New York
3 | 6 | Chicago
(3 rows)

以下语句可将城市名称从 ‘Yerba Buena’ 更新为 ‘San Francisco’,还会返回更新行的 id 值。

UPDATE taxi_trips 
SET city = 'San Francisco'
WHERE city = 'Yerba Buena'
RETURNING id;

以下语句可将特定地区的距离单位从公里转换为英里。

UPDATE taxi_trips 
SET distance = distance * 0.6214
WHERE city NOT IN (SELECT city FROM restricted_zones);