在Postgres更新

时间:2016-01-15 08:40:08

标签: sql postgresql syntax

我真的无法找到包含所有关键字的示例 更新postgres命令。

语法为:

UPDATE [ ONLY ] table [ [ AS ] alias ]
SET{ column = {expression | DEFAULT}}
[,...][FROM fromlist][WHERE condition]

不知道如何仅使用,别名,exp或默认,fromlist。 管理到目前为止只了解和使用下面。需要有关如何使用的帮助 其余的关键字。

UPDATE cds SET temp_min = temp_min-1,
temp_max = temp_min + 20, rainfall = 0
WHERE (river = 'Mal') AND (datac > '2010-12-12')
AND (datac < '2011-12-12');

2 个答案:

答案 0 :(得分:0)

您只需仔细阅读文档即可。 PostgreSQL有一个非常好的文档。关于&#39; ONLY&#39;它states

  

如果在表名之前指定了ONLY,则会更新匹配的行   仅在指定的表中。 如果未指定ONLY,则匹配行   还在从命名表继承的任何表中更新。   (可选)可以在表名后明确指定*   表明包含了后代表。

由于PostgreSQL支持inheritance,UPDATE语句也可能会更改继承指定表的表的行,这可能是不合需要的。

{expression | DEFAULT} 表示您可以将列指定为 NULL (默认)或任何表达式,例如1+1power(2,4)

答案 1 :(得分:0)

以下是一个示例更新语句,它使用您询问的元素:

update foobar as foo -- "foo" is an alias for the table foobar
   set      
     column_1 = default, -- this sets the column to the default value defined in the CREATE TABLE statement
     column_2 = (column_3 + column_4) * 42-- this is an expression
from other_table -- this is the fromlist
where other_table.fid = foo.id -- this uses the "foo" alias

如果您使用table inheritance,则关键字ONLY才有意义。