我有一个包含玩家统计信息的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/