Mysql 在两个不同的组中使用ORDER BY的SQL查询
假设我有一张NBA球员的简单表格: id,玩家,mp,ppg(mp-已进行的比赛,ppg-每场比赛的分数) 我需要一个能得到所有人的查询,但将结果分为两部分:Mysql 在两个不同的组中使用ORDER BY的SQL查询,mysql,sql,database,Mysql,Sql,Database,假设我有一张NBA球员的简单表格: id,玩家,mp,ppg(mp-已进行的比赛,ppg-每场比赛的分数) 我需要一个能得到所有人的查询,但将结果分为两部分: 参与PPG desc订购的30场以上游戏的玩家 玩PPG desc命令的少于30场游戏的玩家 因此,理想的输出是(例如): 第1组)排在第一位(更为重要),因此,即使第2组的PPG高于第1组中的最佳PPG,它也会在该组中最差的PPG之后下降,因为该组的玩家玩了30场以上的游戏 有没有一种方法可以在一个查询中实现这一点?我正在使用m
- 参与PPG desc订购的30场以上游戏的玩家
- 玩PPG desc命令的少于30场游戏的玩家
选择*
SELECT *
FROM tablename
ORDER BY
CASE WHEN mp >= 30 THEN PPG END DESC,
CASE WHEN mp < 30 THEN PPG END ASC
从表名
订购人
当mp>=30时,则PPG结束描述,
如果mp<30,则PPG结束ASC
假设ppq
始终低于1000000,这将起作用:
SELECT
* -- or whatever you want
FROM players
ORDER BY IF(mp>=30,1000000+ppg,mp) desc
这假设第二组按
mp
desc(如示例中所示)排序,而不是按ppg
(如文本中所示)先按mp>30排序,然后按ppg排序
ORDER BY (CASE WHEN mp >= 30 THEN 1 ELSE 2 END) ASC, PPG DESC
选择播放器、mp、ppg
从t
按mp<30订购,ppg描述
我认为您的描述中有一个输入错误,您说过在这两种情况下,这两个将由PPG desc订购?!
SELECT
* -- or whatever you want
FROM players
ORDER BY IF(mp>=30,1000000+ppg,mp) desc
select id, player, mp, ppg
from
playerTable
order by if (mp>=30, 1, 0) desc, ppg desc, mp desc`
ORDER BY (CASE WHEN mp >= 30 THEN 1 ELSE 2 END) ASC, PPG DESC
select player, mp, ppg
from t
order by mp < 30, ppg desc