SQL - 更新列'使用select

时间:2016-11-24 12:40:25

标签: sql postgresql

我在postgresql中有一个表,如下所示。我需要创建一个新表,其中name的NULL值为前一个非空行的值。

表1

name    time    value
---------------------
john    11:00   324
NULL    12:00   645
NULL    13:00   324
jane    11:00   132
NULL    12:00   30
NULL    13:00   NULL
NULL    14:00   -1

输出表

name    time    value
---------------------
john    11:00   324
john    12:00   645
john    13:00   324
jane    11:00   132
jane    12:00   30
jane    13:00   NULL
jane    14:00   -1

备注:

  1. 我可能因为权限限制而无法更改table1 需要创建一个新表。

  2. 表格table1没有id字段

1 个答案:

答案 0 :(得分:0)

如果您有连续的空值记录,则以下内容应该有效。我假设你有一个像以前一样的id列

SELECT DISTINCT ON (a.id) a.id,b.name FROM table1 a INNER JOIN

   (SELECT * FROM table1 WHERE name IS NOT NULL) b 

ON a.id > b.id 
   WHERE a.name IS NULL
ORDER BY a.id,b.id DESC