MySQL将返回的结果之一移动到底部

MySQL将返回的结果之一移动到底部,mysql,Mysql,我在MySQL查询中遇到了一个问题,任何帮助都会很好 基本上,我正在做的项目是记录和显示高尔夫球成绩。我有一个查询,可以得到所有球员早上的分数和下午的分数,将它们相加,并在顶部显示最低分数 我有一个额外的优先级字段,用于检查两个剧本是否在同一个分数上,我可以指定一个数字,将它们显示在另一个之上。所有这些都很好,我的问题是,如果球员只在上午或下午比赛,他们会显示在顶部,因为他们的得分最低。我需要添加一些东西来检查他们是否在上午和下午都打过球,如果没有,那么他们会排在名单的最后。希望这是有意义的 我

我在MySQL查询中遇到了一个问题,任何帮助都会很好

基本上,我正在做的项目是记录和显示高尔夫球成绩。我有一个查询,可以得到所有球员早上的分数和下午的分数,将它们相加,并在顶部显示最低分数

我有一个额外的优先级字段,用于检查两个剧本是否在同一个分数上,我可以指定一个数字,将它们显示在另一个之上。所有这些都很好,我的问题是,如果球员只在上午或下午比赛,他们会显示在顶部,因为他们的得分最低。我需要添加一些东西来检查他们是否在上午和下午都打过球,如果没有,那么他们会排在名单的最后。希望这是有意义的

我的数据库字段是

player_id, 
player_name, 
player_morning_score, 
player_afternoon_score,
player_priority,
player_no_return
我希望在player_no_返回中输入1,然后我的查询将检查这一点,并将它们移动到结果的底部。但我不知道该怎么做

这是我对当前显示它们的查询。

SELECT player_id, player_name, (player_morning_score + player_afternoon_score) AS total
FROM players
ORDER BY 'total,player_priority', 'ASC','player_afternoon_score', 'DESC'
现在我的结果是这样的

Craig    10 

Steve    15

Julie    21

Alex     21

Bob      25

克雷格只打了上午的比赛,所以需要移动到底部

检查SELECT中的IF语句


您可以选择列,如果玩家在早上玩或不放置1或0值。然后按此字段排序,并总计检查SELECT中的IF语句


您可以选择列,如果玩家在早上玩或不放置1或0值。然后按此字段和总计排序

您正在按字符串排序,这意味着您没有排序,请对列/别名使用反勾号:`而不是表示字符串的单引号。尽管您甚至不需要它们(它们用于超过1个字的别名或保留字):

orderby
默认值为
ASC
,因此您不必写下它,只有在需要
DESC
时才可以


我在
orderby
子句中使用
CASE EXPRESSION
添加了您的requirement(如果他没有同时播放这两个选项,他将在列表的底部)。您按字符串排序,这意味着您没有排序,请对列/别名使用反勾号:`而不是表示字符串的单引号。尽管您甚至不需要它们(它们用于超过1个字的别名或保留字):

orderby
默认值为
ASC
,因此您不必写下它,只有在需要
DESC
时才可以

我在
orderby
子句中使用
CASE EXPRESSION
添加了您的要求(如果他没有同时玩这两个,他将在列表的底部)

SELECT player_id, player_name,
       player_morning_score + player_afternoon_score AS total
FROM players 
ORDER BY CASE WHEN player_afternoon_score > 0 AND player_morning_score > 0 THEN 1 ELSE 0 END DESC,
          `total`,player_priority,player_afternoon_score DESC