SQLite:如何使用count(*)范围来更新列?

时间:2015-08-23 12:57:39

标签: sqlite count range

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

small part of column

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

2 个答案:

答案 0 :(得分:1)

如果我理解正确,这应该适合你:

UPDATE tbl_name SET id=rowid

修改 如果是这种情况 - >然后它更加棘手,因为SQlite不支持变量声明。 所以我建议的是,

  1. 从原始表的选择中创建临时表,使得rowid为行号1,2,3等......
  2. 将其rowNum(所需的行号列)设置为每个rowid
  3. 然后用它替换原始表格。
  4. 像这样:(假设原始表名为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;
    

答案 1 :(得分:0)

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

您可以使用一些内部数据库变量(如rowid,oid等)来获取所需内容。

[编辑] 想想我只是理解你的意思,你想要每个插入操作,添加一个值,即表中当前行的总数? 如果是这样,尝试这样的事情:

更新tbl_name SET id =(从tbl_name中选择count(*)) yada_yada_yada