什么 SQLite 命令可以复制前一行的空字段?

What SQLite command can replicate empty fields from a prior row?

我正在将一些数据导入 sqlite,其中一些列使用空值来指示该值与上一行的值相同。

我如何才能完全在 SQLite SQL 中完成此操作?我有一个表示排序的行号。

例如,在导入和处理 with-blank 之后,它看起来应该与导入 non-blank.

相同
$ cat with-blank.csv 
n,x,y
1,aaa,foo
2,,bar
3,,baz
4,bbb,able
5,,baker

cat non-blank.csv
n,x,y
1,aaa,foo
2,aaa,bar
3,aaa,baz
4,bbb,able
5,bbb,baker
sqlite> .mode csv
sqlite> .import with-blank.csv t

注意:不是 Fill empty cells in excel sheet (or SQLite) with the value of nearest filled cell above 的副本,其中包括 Excel 作为潜在解决方案。

我正在寻找可以执行此操作的 Pure SQL 命令。我当然可以在导入 SQLite 之前将其作为预处理步骤执行此操作,但我想了解哪些命令(如果有的话)可以在 SQLite 中执行此操作。

导入 table 后,您可以使用相关子查询更新空列值:

UPDATE tablename AS t1
SET x = (
  SELECT t2.x 
  FROM tablename t2 
  WHERE t2.n < t1.n AND COALESCE(t2.x, '') <> '' 
  ORDER BY t2.n DESC LIMIT 1
)
WHERE COALESCE(t1.x, '') = '';

参见demo