在Sqlite中更新查询

时间:2014-04-09 07:56:36

标签: android sqlite

我试图只更新sqlite中按日期排序的10条记录。

我正在使用此查询,但无法继续在限制时获得异常。

UPDATE TABLENAME  SET COLUMMANGE = 'VALUE' WHERE  1  LIMIT 10 ORDER BY COLUMNNAME ASC

3 个答案:

答案 0 :(得分:3)

我假设您的表中有一个名为ID的字段,基于此,您应该按照以下方式对更新的10条最新记录进行查询,

UPDATE TABLENAME  SET COLUMMANGE = 'VALUE' WHERE 
ID in ( SELECT ID from TABLENAME ORDER BY COLUMNNAME DESC LIMIT 10 );

此处内部查询将从表中选择10个最新记录ID。这些ID将传递给外部更新查询。

答案 1 :(得分:1)

我认为您首先需要嵌套查询来获取要更新的行的主键(或其他键),而不仅仅更新这些行。尝试这样的事情:

 UPDATE TABLENAME SET COLUMMANGE='VALUE'
 WHERE id IN (
     SELECT id FROM (
         SELECT id FROM TABLENAME
         WHERE <YOUR CONDITION>
         ORDER BY COLUMNNAME ASC
         LIMIT 10
     )
 );

如果您需要更多详细信息,此处也会进行讨论:update multiple rows using limit in mysql?

但是真的想想你是否真的想要这种行为。 WHERE 1也不是有效SQL语法的一部分。

答案 2 :(得分:1)

尝试此查询

UPDATE TABLE_NAME  SET COLUMN_NAME = 'VALUE' WHERE PRIMARYKEY_COLUMN in ( SELECT PRIMARYKEY_COLUMN  from TABLE_NAME ORDER BY COLUMNNAME DESC LIMIT 10 );
  • 主要关键栏在此表中是强制性的。

  • 上述查询结果排名前十的记录