以降序排序mysql查询结果

时间:2013-12-24 05:31:06

标签: mysql sql select join sql-order-by

我正在尝试按降序创建一个标记表和排名团队。 我试过这个。

$q = $db_con-> prepare("
SELECT @s:=@s+1 serial_number, t_name,name,marks FROM team,user,(SELECT @s:=0) AS s WHERE user.u_id=team.u_id ORDER BY marks DESC");

以上查询显示的结果是DESC标记顺序,但序列号会被更改。 像..

sr no    team name   marks

 3          A         30
 1          B         20
 2          C         10

如何按顺序获取序列号?

2 个答案:

答案 0 :(得分:2)

试试这个:

SELECT @s:=@s+1 serial_number, t_name, name, marks 
FROM (SELECT t_name, name, marks 
      FROM team t INNER JOIN user u ON u.u_id=t.u_id 
      ORDER BY marks DESC
     ) AS A, (SELECT @s:=0) AS s;

答案 1 :(得分:2)

您需要在子查询中分配序列号,然后按标记排序:

select t.*
from (SELECT @s:=@s+1 as serial_number, t_name, name, marks
      FROM team join
           user
           on user.u_id=team.u_id cross join
           (SELECT @s:=0)s
    ) t
ORDER BY marks DESC;

但是,您没有为序列号订购任何东西。你真的需要,因为表的排序是不确定的。

我还修复了你的连接语法,以使用正确的ANSI标准连接。

相关问题