修复通过交替1,2,3-1,2,3-1,2,3对MYSQL结果排序的查询

修复通过交替1,2,3-1,2,3-1,2,3对MYSQL结果排序的查询,mysql,Mysql,我以前问过一个关于通过交替(1,2,3-1,2,3-1,2,3)行对MYSQL结果排序的问题,我发现了这个问题 我试图将代码应用于我的情况,这就是我得到的: SELECT x.id, x.pic0, x.bio, x.bio2, x.site, x.url, x.applet FROM (SELECT t.id, t.pic0, t.bio, t.bio2, t.site, t.url, t.applet CASE WHEN @site != t.site THEN @rownum :

我以前问过一个关于通过交替(1,2,3-1,2,3-1,2,3)行对MYSQL结果排序的问题,我发现了这个问题

我试图将代码应用于我的情况,这就是我得到的:

SELECT 
x.id, 
x.pic0,
x.bio,
x.bio2,
x.site,
x.url,
x.applet
FROM 
(SELECT 
t.id, 
t.pic0,
t.bio,
t.bio2,
t.site,
t.url,
t.applet
CASE
WHEN @site != t.site THEN @rownum := 0
WHEN @site = t.site THEN @rownum := @rownum + 1
ELSE @rownum
END AS rank,
@site := t.site
FROM ".$table." t,
(SELECT @rownum := 0, @site ORDER BY t.site) r) x 
ORDER BY x.rank, x.site
这是我得到的MYSQL错误-服务器使用的是MYSQL 5.1

#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 'CASE WHEN @site != t.site THEN @rownum := 0 WHEN @site = t.site THEN @rownum :' at line 18
  • 我是一个完全的新手,这个问题,我甚至不能开始理解:)所以我一点也不知道它到底出了什么问题

  • 如何将WHERE条件添加到此查询

    生物类“价值”在哪里


  • 您缺少一个

    t.applet , CASE WHEN @site ...
             ^................................here
    
    在此处添加
    where

    FROM ".$table." t,
    (SELECT @rownum := 0, @site ORDER BY t.site) r) x 
    
    WHERE bio LIKE 'value'
    
    ORDER BY x.rank, x.site
    

    Ty,这修复了一个部分,现在我得到了:#1109-order子句中的未知表't'移动
    order BY t.site
    ,因为
    @site
    只是一条记录,还是应该是
    @site:=t.site
    ?我只是修改了这个查询,我不理解它,所以,在某种程度上,我是愚蠢的,要求有人来修复我不理解自己的东西。谢谢你的努力