【问题标题】:update in Postgres在 Postgres 中更新
【发布时间】:2016-04-20 19:32:36
【问题描述】:

我真的找不到包含所有关键字的示例 更新 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');

【问题讨论】:

  • 您会在需要时找到它们。您在示例中所做的是最常见的更新。
  • 是的,我可以做最常见的更新,因为它写在示例下面。我想知道如何使用它们的其余部分(一个例子会有所帮助,我可以扩展一些东西)和“你会在需要它们的时候发现”有点比这个问题好笑,而不是第一个告诉我的人:)) 在过去 24 小时内。
  • 这不是危险,您给出答案,我们提出问题。
  • 太有趣了 Jeopardy 是美国的电视节目吧?我来自欧洲:D
  • 您是否尝试过查看UPDATE 的手册页?它解释了一切。如果您没有找到别名或仅在文档中找到,请提出问题。

标签: sql postgresql syntax


【解决方案1】:

这是一个使用您询问的元素的示例更新语句:

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

关键字ONLY 仅在您使用table inheritance 时才有意义。

【讨论】:

    【解决方案2】:

    您只需要仔细阅读文档即可。 PostgreSQL 有一个非常好的文档。关于“仅”它states

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

    由于PostgreSQL支持inheritance,UPDATE语句也可能改变继承指定表的表的行,这可能是不可取的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-28
      • 2014-02-02
      • 2022-07-12
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多