首页 > 解决方案 > MySQL - 选择具有字段值 > 10 且不按此字段排序的第一行的查询

问题描述

我想 SELECT在我的玩家表中创建一个结果,第一行是玩了 10 场以上游戏的玩家。阻止我做的事情ORDER BY total_games是我想慢慢地得到ORDER以下结果。signin_yearplayer_type

+--------------+-------------+--------------+--------------+
| username     | signin_year | player_type  | total_games  |
+--------------+-------------+--------------+--------------+
| John Doe     | 2019        | 10           | 62           |
| Jon Skeet    | 2019        | 20           | 2479         |
| Shmebulock   | 2020        | 10           | 82           |
| Norman       | 2020        | 20           | 154          |
| Bob          | 2019        | 10           | 3            |
| Alice        | 2020        | 10           | 9            |
| Community    | 2020        | 20           | -1           |
+--------------+-------------+--------------+--------------+

我尝试了一堆WHEREs 和ORDER BYs 但我看不到让它工作,这甚至可能还是我需要使用子查询?

标签: mysqlsql-order-by

解决方案


尝试ORDER BYCASE表达式一起使用:

SELECT *
FROM player
ORDER BY
    CASE WHEN total_games > 10 THEN 0 ELSE 1 END,
    signin_year,
    player_type;

这将总共玩了 10 场以上游戏的玩家放在首位,然后是所有其他玩家。在这两个区块中,数据按登录年份升序排序,然后是升序玩家类型。


推荐阅读