独特的排序方案

时间:2013-01-01 12:47:38

标签: php mysql sorting

我有一个带有玩家统计信息的mysql数据库。

playerid |球员|点|联赛

我想对点DESC进行排序查询,但是有些玩家在其他联赛中玩过,所以他们在数据库中有多条记录。

理想情况下,我想对“大联盟”中的分数进行排序,当一名球员参加其他联赛时,请列出以下内容。看起来应该是这样的:

John Smith | 27 | Major League
Gary White | 24 | Major League
           | 32 | Minors
Joe Flatts | 15 | Major League

... ETC

我不确定在我的PHP中在MySQL视图或服务器端创建它是否更容易。

有人有任何建议吗?

1 个答案:

答案 0 :(得分:1)

您可以通过加入玩家表的第二个副本(仅过滤大联盟)在SQL中执行此操作,但对于较大尺寸的表格来说这不是很好:

SELECT l.*, (l.league = 'Major League') AS major
FROM league_points AS l 
    LEFT JOIN league_points AS major 
        ON l.player = major.player AND major.league = 'Major League'
ORDER BY major.points DESC, major DESC, league DESC

您可能希望从输出中删除主要列,它就是为了确保大联盟在ORDER BY操作中排在第一位。如果你不希望那些没有在大联盟打过球的球员出现,可以将LEFT JOIN改为INNER JOIN。