本文介紹了哪條SQLite命令可以復(fù)制前一行中的空字段?的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我正在將一些數(shù)據(jù)導(dǎo)入到SQLite中,其中某些列使用空值來指示該值與前一行的值相同。
如何才能完全在SQLite SQL中完成這一任務(wù)?我有一個(gè)表示排序的行號(hào)。
例如,導(dǎo)入并處理with-blank
后,應(yīng)該看起來與導(dǎo)入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的副本,F(xiàn)ill empty cells in excel sheet (or SQLite) with the value of nearest filled cell above將Excel作為潛在的解決方案。
我正在尋找可以做到這一點(diǎn)的Pure SQL命令。當(dāng)然,我可以將此作為導(dǎo)入到SQLite之前的一個(gè)預(yù)處理步驟,但我想了解在SQLite中有哪些命令(如果有)可以做到這一點(diǎn)。
推薦答案
導(dǎo)入表后,可以使用相關(guān)子查詢更新空列值:
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, '') = '';
請(qǐng)參閱demo。
這篇關(guān)于哪條SQLite命令可以復(fù)制前一行中的空字段?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,