我正在开发一个简单的待办事项应用程序,该应用程序每周的每一天都有一列。启动时,应用程序会检查当前日期之前是否有任何未完成的任务。如果是这样,它们将被移动到当前日期列的顶部。
该应用程序是基于云的,但是使用SQLite数据库备份了脱机模式的任务。我可以通过更新日期属性轻松移动任务,但我需要每个任务的order属性从0开始递增以将它们放在顶部。
我需要能够单独在SQLite中定义一个count变量,并在每次执行的更新时增加它。我知道这段代码不起作用,但这是解释需要做什么的简单方法:
count = 0
UPDATE `tasks`
SET `date` = '2010-01-04',
`order` = `count`++
WHERE `date` < '2010-01-04'
如果可能,我宁愿不使用临时表或在SQLite之外使用计数器。
@OMG小马 - 我开始认为SQLite中的所有内容都不可能。
答案 0 :(得分:3)
我会用第二个SQL语句:
UPDATE `tasks`
SET `date` = '2010-01-04',
count = ( SELECT COUNT(`task_id`) FROM `tasks` ) + 1
WHERE `date` < '2010-01-04'
未经测试但应该有效!
答案 1 :(得分:0)
SQLite是一个很棒的工具,但如果可以使用JUST SQLite,我会感到惊讶。在该应用程序中,T-SQL支持并不是那么好。
您可以更新记录中的现有值;添加或减去它,但这需要记录已经有序。
答案 2 :(得分:0)
实际上,您可以在Sqlite中使用添加 - 请查看http://www.sqlite.org/lang_expr.html;你只需要使用额外的UPDATE语句来递增计数器,并使用内部查询来再次获取它。确保在事务中执行此操作,否则您将遇到并发问题。
答案 3 :(得分:0)
对我来说,你想要每行的一个计数列。如果我是你,我想你可以做这个电话
UPDATE `tasks`
SET
`date` = '2010-01-04',
count = count + 1
WHERE `date` < '2010-01-04'
lemme知道它是如何运作的......