什么 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。
我正在将一些数据导入 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。