SQLite:如何使用计数(*)范围更新列?

SQLite: How to UPDATE column using count(*) range?

我不确定我在这里使用的术语是否正确。

基本上我想使用 count(*) [485] 作为分隔符按升序更新整个“id”列,因此生成的行值将与 rownumber(而不是 rowid)相对应。

试试这个:http://www.sqlite.org/lang_createtable.html#rowid

您可以使用一些内部数据库变量,例如 rowid、oid 等来获取您需要的内容。

[编辑] 我想我刚刚理解你的意思,你想要为每个插入操作添加一个值,该值是当前在 table 中的总行数? 如果是这样,请尝试这样的操作:

更新tbl_name SET id = (select count(*) from tbl_name) 其中 yada_yada_yada

如果我理解正确的话,这应该对你有用:

UPDATE tbl_name SET id=rowid

编辑 如果是这种情况 -> 那么它就有点棘手了,因为 SQlite 不支持变量声明。 所以我的建议是,

  1. 从原始 table 的 select 创建临时 table,这使得它的 rowid 成为行号 1、2、3 等...
  2. 设置它的rowNum(需要的行号列)作为每个rowid
  3. 然后用它替换原来的table。

像这样:(假设原来的table叫orig_name)

            CREATE TABLE tmp_tbl AS SELECT rowNum FROM orig_name;
            UPDATE tmp_tbl SET rowNum=rowid;
            DROP TABLE orig_name;
            CREATE TABLE orig_name AS SELECT rowNum FROM tmp_tbl;
            DROP TABLE tmp_tbl;