我试图只更新sqlite中按日期排序的10条记录。
我正在使用此查询,但无法继续在限制时获得异常。
UPDATE TABLENAME SET COLUMMANGE = 'VALUE' WHERE 1 LIMIT 10 ORDER BY COLUMNNAME ASC
答案 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 );
主要关键栏在此表中是强制性的。
上述查询结果排名前十的记录