MySQL为空别名赋值

MySQL为空别名赋值,mysql,Mysql,结果表: result_event | name | position -------------+---------------+------------ 1 | Jason Smith | 1 1 | David Johnson | 2 1 | Randy White | 3 1 | Billy Hansen | 4 2 | Wally Man

结果表:

result_event | name          |  position
-------------+---------------+------------
1            | Jason Smith   |  1
1            | David Johnson |  2
1            | Randy White   |  3
1            | Billy Hansen  |  4 
2            | Wally Mann    |  1
2            | Jason Smith   |  2
2            | Billy Hansen  |  3
2            | David Johnson |  4
2            | Randy White   |  5
我有一张表,上面有比赛结果。我想根据两站比赛中的组合位置对车手进行分类。(如1+2=3,2+4=6等)车手“沃利·曼”没有参加第一场比赛,因此即使他赢得了第二场比赛,他的得分也应该落后于所有其他人

预期结果:

Name          | Race1  | Race2
--------------+--------+-------
Jason Smith   |   1    |   2
David Johnson |   2    |   4
Billy Hansen  |   4    |   3 
Randy White   |   3    |   5
Wally Mann    |   NULL |   1
当前查询:

SELECT name,
     CASE(WHEN result_event=1 then position else 0 END) Race1,
     CASE(WHEN result_event=2 then position else 0 END) Race2,
     SUM(position) eventscore
FROM results
GROUP BY name
ORDER BY eventscore DESC

在我当前的查询中,“Wally Mann”是列表中的第一个,因为(Null+1)<(1+2)。在所有有两个结果的参赛者之后,我能做些什么使(Null+1)结果排序

将您的订单更改为按记录数DESC排序,然后按事件分数排序

ORDER BY count(*) DESC, eventscore ASC

您可以尝试按名称分组,并添加一个条件count(*)=2,然后根据累积分数对它们进行排序,然后为count(*)=1编写联合查询
select name from results
group by name
order count(*) desc, sum(position);