MySQL 中 update 与 limit 关键字(关键词)使用限制
问题
近两天在改一个 bug,做一个 cron 计划任务,判断并修改过期的用户会员状态。但执行之后用户状态并没有修改。就把 SQL 单独拎出来,放到 navicat(MySQL 连接工具) 里执行一下,果然报错了。
UPDATE {$DT_PRE}member SET type = 0 WHERE {$condition} ORDER BY userid DESC LIMIT 0,10000
提示 “10000” 左右的地方有符号错误,纳闷,这有什么错误的呢?
将 update 换成 select 语句,又不报错了。难道 update 和 limit 这两个关键字之间有我不知道用法?
去网上搜了一下,果然,MySQL 的 update 语句只支持更新前多少行,不支持从某行到某行。
解决
知道错在哪里,解决就方便多了。直接修改 LIMIT 0,10000
, 去除位移量即可。
UPDATE {$DT_PRE}member SET type = 0 WHERE {$condition} ORDER BY userid DESC LIMIT 10000
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。