2011-06-04 33 views
1
delimiter // 
create procedure rankPagesLive() 
BEGIN 
    SET @r=0; 
    UPDATE pageslive SET Rank= @r:= (@r+1) ORDER BY fan_count DESC; 
END // 
delimeter ; 

错误'创建一个存储过程#1064 - 你必须在 您的SQL语法错误;检查手册中 相当于你的MySQL服务器 版本使用 接近正确的语法 '分隔符//创建过程 rankPagesLive()BEGIN SET @ R = 0' 在行1MySQL服务器犯规通过phpMyAdmin的


怎么了?

回答

0

的问题是与phpMyAdmin,而不是与SQL代码,delimiter标识不通过SQL查询允许的(大概只有我的服务器上),

我通过SSH登录到MySQL服务器之后 - 它工作得很好。

感谢您的贡献。

2

最后一行应该是:

delimiter ; 
+0

+1。我没有看到它。 :) – 2011-06-04 18:21:31

+0

@rkcell:'delimiter',而不是'delimeter'。请注意“我”而不是“e”。 – 2011-06-06 12:59:12

+1

哦...你是对的...但提到的问题开始在第1行 - phpMyAdmin不允许使用'delimiter'))) – rkcell 2011-06-07 06:44:02

0

可以在某种程度上使用一个这样的查询

update pageslive as p 
inner join (
select @r:[email protected]+1 as rn,id 
    from pageslive,(select @r:=0) as r order by fan_count desc 
    ) as t 
on p.id = t.id 
set rank = rn 

但恕我直言我会避免存储在表中的计算的字段。您可以随时通过简单的选择获取该值。

+0

正如我所提到的,服务器不创建通过phpMyAdmin的过程... – rkcell 2011-06-06 12:53:30