mysql - 当我尝试将它添加到事件时,SQL 查询不起作用
问题描述
我有这个查询:
SET @rank = 0;
UPDATE t1 SET rank = (@rank := @rank + 1)
ORDER BY balance DESC;
我想创建一个每 x 分钟执行一次此查询的事件,但我不断收到此错误:
以下查询失败:“CREATE DEFINER=
root
@localhost
EVENTupdaterank
ON SCHEDULE EVERY 5 SECOND STARTS '2019-09-17 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO SET @rank = 0; UPDATE t1 SET rank = (@rank := @rank + 1) 按余额 DESC 排序;" MySQL 说:1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 3 行的“UPDATE t1 SET rank = (@rank := @rank + 1) ORDER BY balance DESC”附近使用正确的语法
解决方案
当我查看错误时,它会显示您在 MySQL 用户帐户/主机名中使用反引号,这些应该像'root'@'localhost'
. 我会DEFINER = CURRENT_USER()
改用,但一定要从正确的帐户运行它..
CREATE DEFINER = CURRENT_USER() EVENT `updaterank`
ON SCHEDULE EVERY 5 SECOND STARTS '2019-09-17 00:00:00' ON COMPLETION NOT PRESERVE ENABLE
DO
SET
@rank = 0;
UPDATE t1 SET rank = (@rank := @rank + 1) ORDER BY balance DESC;
看演示
或者
CREATE DEFINER = CURRENT_USER() EVENT `updaterank`
ON SCHEDULE EVERY 5 SECOND STARTS '2019-09-17 00:00:00' ON COMPLETION NOT PRESERVE ENABLE
DO
UPDATE t1 CROSS JOIN (SELECT @rank := 0) AS init SET rank = (@rank := @rank + 1) ORDER BY balance DESC;
推荐阅读
- android - 我想知道为什么我的 FuelManager 类在 android studio 中不被识别
- excel - 如何在 VBA 中保存工作表和 PDF
- python - Django OAuth - 在中间件中包含授权标头?
- typescript - 如果在 Typescript 中满足条件,如何断言联合类型的类型?
- c++ - How are constructors with default parameters called in inheritance hierarchy?
- spring-boot - 调用springboot rest API时的时间差
- locust - 根据响应数据引发异常以将成功的连接标记为失败
- c# - 事件处理程序中的锁定语句 - 可能的死锁?
- c++ - 比较一般树中两个节点的所有子节点
- r - ggplot不显示点