【问题标题】:Updating records in Postgres using nested sub-selects使用嵌套子选择更新 Postgres 中的记录
【发布时间】:2009-11-03 17:03:33
【问题描述】:

我有一个表,我在其中添加了一个新列,我想编写一条 SQL 语句来根据现有信息更新该列。这是两张表和相关的列

'联赛' => 身份证 => 联赛键 => League_id(这是新列) “权限” => 身份证 => 联赛键

现在,用简单的英语,我想做的是这样的

Set leagues.league_id to be permissions.id for each value of permissions.league_key

我曾尝试过这样的 SQL:

更新联赛 SET League_id = (从权限中选择 id WHERE League_key = (从联赛中选择不同的(league_key))) WHERE League_key = (SELECT distinct(league_key) FROM Leagues)

但我收到一条错误消息,上面写着

错误:用作表达式的子查询返回多于一行

对此的任何帮助将不胜感激

【问题讨论】:

    标签: postgresql subquery


    【解决方案1】:

    根据您的要求

    将leagues.league_id 设置为permissions.league_key 的每个值的permissions.id

    这样做。

    UPDATE leagues
    SET league_id = permissions_id
    FROM permissions
    WHERE permissions.league_key = leagues.league_key;
    

    【讨论】:

    • 我不得不将leagues.league_id 更改为league_id,但效果很好!非常感谢
    【解决方案2】:

    当您将子查询作为表达式执行时,它无法返回结果集。您的子查询必须评估为单个结果。您看到的错误是因为您的子查询之一返回了多个值。

    Here is the relevant documentation for pg84:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      • 2014-07-11
      相关资源
      最近更新 更多