MySQL - Выберите запрос с первыми строками, где значение поля> 10, без упорядочения по этому полю - PullRequest
1 голос
/ 06 марта 2020

Я хотел бы сделать SELECT в своем игровом столе, где в результате в первых рядах будут игроки, сыгравшие более 10 игр. Что мешает мне просто сделать ORDER BY total_games, так это то, что я хотел бы ORDER на signin_year, а затем player_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           |
+--------------+-------------+--------------+--------------+

Я попробовал кучу WHERE s и ORDER BY s, но я не могу заставить его работать, это вообще возможно или мне нужно использовать подзапрос?

1 Ответ

3 голосов
/ 06 марта 2020

Попробуйте использовать ORDER BY вместе с выражением CASE:

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

Сначала игроки играют более 10 игр, а затем все остальные игроки. Внутри этих двух блоков данные сортируются по возрастанию по году входа, за которым следует тип игрока по возрастанию.

...