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

玩家编号|播放器点|联盟

我想对分数DESC进行查询,但是有些球员在其他联赛中打过球,因此在数据库中有多个记录。

理想情况下,我想对“美国职业棒球大联盟”中的得分进行排序,当一名球员参加过其他联赛时,请在下面列出。它看起来应该像这样:

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


等等...

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

有人有什么建议吗?

最佳答案

您可以在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。

关于php - 独特的分类方案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14110594/

10-10 22:09