Python / SQL查询使用ROWID重新调整SQLite3 db中的不同步数据

时间:2014-06-26 21:20:55

标签: sql python-2.7 sqlite

我有一个包含4列的SQLite3表,“date”,“price”,“price2”和“vol”。有大约200k行数据,但最后2列与798行不同步。这是第1行中第二列的值,实际上对应于第798行的前两列的值。

我正在使用Python 2.7。

我原以为必须有一种方法可以使用ROWID列作为唯一标识符,我可以提取前两列,然后提取后两列并根据“ROWID + 798”或类似内容重新加入。< / p>

这可能吗?如果有的话,有人会知道怎么做吗?

1 个答案:

答案 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)