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);