我有一个包含4列的SQLite3表,“date”,“price”,“price2”和“vol”。有大约200k行数据,但最后2列与798行不同步。这是第1行中第二列的值,实际上对应于第798行的前两列的值。
我正在使用Python 2.7。
我原以为必须有一种方法可以使用ROWID列作为唯一标识符,我可以提取前两列,然后提取后两列并根据“ROWID + 798”或类似内容重新加入。< / p>
这可能吗?如果有的话,有人会知道怎么做吗?
答案 0 :(得分:0)
我很好奇你的数据库会如何像这样腐败,并对你的评估持怀疑态度,你似乎确切地知道出了什么问题。如果这样的事情可能发生,似乎还有许多其他问题。
在任何情况下,如果我理解正确,您描述的查询应该是这样的。
在大多数DBMS中,您可以使用一个子查询执行此操作,但SQLite中不允许使用语法(col1,col2) =
,因此您必须这样做。
UPDATE table1 t SET
col1 =
(SELECT col1 FROM table1
WHERE t.rowid = rowid - 798),
col2 =
(SELECT col2 FROM table1
WHERE t.rowid = rowid - 798)