Mysql 在多个列中查找最高分

Mysql 在多个列中查找最高分,mysql,multiple-columns,Mysql,Multiple Columns,如果我的数据样本是 team name score1 score2 Adele's 15 18 Madonna 16 3 Britanny 9 12 如何使用这两列获得前5名的分数列表- 我的输出应该是 Adele's 18 Madonna 16 Adele's 15 Britanny 12 如果可以的话,纯粹作为旁注,将数据库中的“team name”列重命名为team_name是值得的,因为这样在查询和处理数据时会更

如果我的数据样本是

team name  score1  score2
Adele's     15      18
Madonna   16       3
Britanny    9        12
如何使用这两列获得前5名的分数列表- 我的输出应该是

Adele's   18
Madonna   16
Adele's   15
Britanny  12
如果可以的话,纯粹作为旁注,将数据库中的“team name”列重命名为team_name是值得的,因为这样在查询和处理数据时会更加容易:)


纯粹作为旁注,如果可以的话,将数据库中的“团队名称”列重命名为团队名称是值得的,因为这样在查询和处理数据时会更加容易:)

您可以使用
联盟来获取所有团队和分数的列表。然后,使用
ORDER
LIMIT
获得前5名

select * from (
  select team, score1 from tbl
  union select team, score2 from tbl) a
order by score1 desc
limit 5;

您可以使用
联盟
获取所有团队和分数的列表。然后,使用
ORDER
LIMIT
获得前5名

select * from (
  select team, score1 from tbl
  union select team, score2 from tbl) a
order by score1 desc
limit 5;

Derek Kromm的答案需要稍加修改,以避免在一个团队在前5名中有两个相同的分数时出现错误(例如,与示例相同,除了麦当娜的分数1和分数2都是16)。union的默认行为是删除重复的行,因此只保留一个分数。基于这个问题,我认为这不是我想要的行为。将'all'关键字添加到union将防止此错误

select * from (
  select team, score1 from tbl
  union all select team, score2 from tbl) a
order by score1 desc
limit 5;

我会把这篇文章作为对德里克·克罗姆回答的评论,除非我没有足够的声誉这么做。抱歉,如果将其作为答案发布不是正确的礼仪。

Derek Kromm的答案需要稍加修改,以避免团队在前5名中有两个相同分数时出现错误(例如,与示例相同,但麦当娜的分数1和分数2均为16)。union的默认行为是删除重复的行,因此只保留一个分数。基于这个问题,我认为这不是我想要的行为。将'all'关键字添加到union将防止此错误

select * from (
  select team, score1 from tbl
  union all select team, score2 from tbl) a
order by score1 desc
limit 5;

我会把这篇文章作为对德里克·克罗姆回答的评论,除非我没有足够的声誉这么做。抱歉,如果将其作为答案发布不是正确的礼仪。

感谢您的回复,但如果他们都在前5名,则不会同时输出score1和score2。感谢您的回复,但如果他们都在前5名,则不会同时输出score1和score2。UNION是答案,现在我只需学习:)谢谢。UNION是答案,现在我只需要学习:)谢谢你。