mysql - 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”附近使用正确的语法
是什么赋予了?
解决方案
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
是您表中的主键列。请注意,使用LIMIT
withoutORDER BY
是毫无意义的,因为您没有告诉 MySQL您要保留哪些记录。
推荐阅读
- python - 选择性地否定数组中的元素
- python - 尝试在 Python 中对 Google 表格工作表进行排序时出错
- discord - 从 wit.ai 接收数据时,ping 和丢包率上升
- ios - IOS 构建成功,但无法部署到存储,因为缺少推送通知权利,应用程序不使用推送通知
- git - 我编辑了 gitignore 以允许我的图像存储文件夹上传,但是当我推送时没有更新
- oracle - PL/SQL 代码将具有不同列序列的平面文件中的数据加载到 oracle 表中
- jquery - 使用输入文本框控制具有背景颜色的输入范围滑块
- node.js - Crystal 报表与第三方应用程序集成的架构
- linux - 在同一行 shell 脚本中声明变量
- git - TensorFlow 导入错误(使用 Anaconda)