使用sqlite表中的数字更新列

时间:2014-09-07 20:05:45

标签: sql database sqlite select sql-update

这应该很简单,但我无法弄清楚如何做到这一点。我想修改两个不同列的值。一个从1到总行数,另一个从行总数到一个(基本上增加和减少数量)。我试过了:

start = 0
end = number_of_rows + 1
c.execute('SELECT * FROM tablename') 
newresult=c.fetchall()

for row in newresult:

  start += 1
  end -= 1

  t = (start,)
  u = (end,)    

  c.execute("UPDATE tablename SET Z_PK = ?", t) ---> this will transform all rows with Z_PK since there is no where statement to limit
  c.execute("UPDATE tablename SET Z_OPT = ?", u)

问题是我不知道如何添加"其中"声明,因为我没有值我确定行(如ID号)。一种可能性是将当前行作为参数返回"其中"但我不知道怎么做......

1 个答案:

答案 0 :(得分:0)

如果没有INTEGER PRIMARY KEY列,您的表格会有internal rowid column,其中已包含您想要的值:

UPDATE MyTable
SET Z_PK = rowid,
    Z_OPT = (SELECT COUNT(*) FROM MyTable) + 1 - rowid