首页 > 解决方案 > mySQL LIMIT OFFSET 不适用于更新

问题描述

这工作正常:

SELECT * FROM glinks_BuildRelations WHERE cat_id = 284 LIMIT 10,100

然而,当试图进行更新时,我得到:

UPDATE glinks_BuildRelations SET page_num = 1 WHERE cat_id = 284 LIMIT 10,100

该错误没有帮助:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“100”附近使用正确的语法

是什么赋予了?

标签: mysql

解决方案


LIMIT不能以这种方式直接与 MySQL 更新语句一起使用。我们可以通过使用子查询来查找要更新的匹配记录来解决此错误:

UPDATE glinks_BuildRelations
SET page_num = 1
WHERE id IN (SELECT id FROM (
                 SELECT id FROM glinks_BuildRelations WHERE cat_id = 284
                 ORDER BY some_col LIMIT 10, 100)x );

我在这里假设这id是您表中的主键列。请注意,使用LIMITwithoutORDER BY是毫无意义的,因为您没有告诉 MySQL您要保留哪些记录。


推荐阅读