我想创建一个可以执行两个操作的事件,但我不知道如何操作。
这是查询:
CREATE EVENT rate ON SCHEDULE EVERY 24 HOUR STARTS '2011-12-01 20:00:00' DO SET @p=1
UPDATE users SET rate = (@p:=@p+1) ORDER BY power DESC
我还尝试在操作之间写入“AND”,但它仍然会写入错误。
错误是:
\#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE users SET rate = (@p:=@p+1) ORDER BY power DESC' at line 2
您可以将事件的正文包裹在BEGIN ... END http://dev.mysql.com/doc/en/begin-end.html复合语句块:
CREATE EVENT rate ON SCHEDULE EVERY 24 HOUR STARTS '2011-12-01 20:00:00' DO BEGIN
SET @p=1;
UPDATE users SET rate = (@p:=@p+1) ORDER BY power DESC;
END
请注意,每个语句必须以分号终止,因此您必须将客户端配置为使用不同的语句分隔符,以便它不会认为第一个遇到的分号是语句的结尾CREATE EVENT
命令(如何执行此操作取决于您的客户,但在MySQL 命令行工具 http://dev.mysql.com/doc/en/mysql.html,您可以使用DELIMITER
command http://dev.mysql.com/doc/en/mysql-commands.html在phpMyAdmin中您可以在SQL输入框下方设置分隔符)。
或者,在这种情况下,您可以使用多表UPDATE
语法来执行变量初始化,这样您只需要一个简单的语句:
CREATE EVENT rate ON SCHEDULE EVERY 24 HOUR STARTS '2011-12-01 20:00:00' DO
UPDATE users, (SELECT @p:=0) init
SET users.rate = (@p:=@p+1)
ORDER BY users.power DESC
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)