我正在尝试按降序创建一个标记表和排名团队。 我试过这个。
$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
如何按顺序获取序列号?
答案 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标准连接。