首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用组选择MySql还是用临时表选择SUBQUERY?然后点了两次?多么?

用组选择MySql还是用临时表选择SUBQUERY?然后点了两次?多么?
EN

Stack Overflow用户
提问于 2011-09-05 21:38:40
回答 2查看 298关注 0票数 1

题目是我对以下问题的解决办法的想法,但我当然不想把你的答案限制在这一点上。

数据库说明:

表:选手

列: Player_id (整数主键索引)、Team_id (整数)、Player_name (文本)、Player_points (整数)、Player_status (ENUM 'Ok‘、'NotOk')

我想拥有5名球员,每支球队的得分最多(1,2,3)。

第1-5排第1队、第6-10队第2队、第11至第15队第3队,每个队的队员按分数排序,然后按每个队的状态排序,在一个查询中(更正:或在没有选择的情况下更多的查询)。

第1-5行(如team_id 1所示):

  • 2,1,约旦,10000,Ok
  • 8,1,Pippen,90,000,Ok
  • 5,1,Rodman,9,000,Ok
  • 9,1,格兰特,9,000,NotOk (如你所见,它们是按点数,然后按状态排列)
  • 1,1,Parish,5000,OkH 210f 211

第6-10行(用于team_id 2):

  • 14,2,Ewing,8000,NotOk
  • 11,2,Starks,7,000,Ok
  • 10,2,Oakley,7,000,NotOk
  • 19,2,Harper,6000,Ok

H 12113,2,Smith,5000,OkH 222f 223

第11-15行(适用于team_id 3):

  • 29,3,鸟,9000,Ok
  • 28,3,Rivas,8000,NotOk
  • 21,3,3,Paxson,7000,Ok
  • 20,3,Shaw,7000,NotOk

H 13322,3,Lohaus,7000,NotOkH 234f 235

我正在寻找一种性能良好的解决方案。表将有数千个数据,但Team_id的只有3 (NBA球队/球员只是为了演示)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-05 21:54:34

试一试

代码语言:javascript
复制
SELECT * FROM
(
SELECT Player_id, Team_id, Player_name, Player_points, Player_status FROM Players WHERE Team_id = 1 ORDER BY Team_id, Player_points DESC, Player_status DESC LIMIT 5
UNION ALL
SELECT Player_id, Team_id, Player_name, Player_points, Player_status FROM Players WHERE Team_id = 2 ORDER BY Team_id, Player_points DESC, Player_status DESC LIMIT 5
UNION ALL
SELECT Player_id, Team_id, Player_name, Player_points, Player_status FROM Players WHERE Team_id = 3 ORDER BY Team_id, Player_points DESC, Player_status DESC LIMIT 5
)
ORDER BY Team_id, Player_points DESC, Player_status DESC

编辑-根据注释:将UNION更改为UNION ALL

票数 1
EN

Stack Overflow用户

发布于 2011-09-05 22:03:08

这可能不容易优化,但它应该适用于任何数量的团队。

代码语言:javascript
复制
SELECT Player_ID, Team_ID, Player_name, Player_points, Player_status
FROM Players
WHERE (
    SELECT COUNT(*)
    FROM Players AS p
    WHERE p.Team_ID = Players.Team_ID
      AND p.Player_points > Players.Player_points
) <= 5
ORDER BY Team_ID ASC, Player_points DESC, Player_status DESC
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7312952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档