Name | Faction | Score
----------------------------------------
Alpha | Viva | 7000
Beta | Rico | 8000
Bravo | Morgan | 9000
Active | Rico | 10000
Delta | Edison | 11000
Siphon | Viva | 12000
Taximus | More | 13000
Ariticus | Viva | 14000
Ariticus | Havoc | 15000
Из этой таблицы я сначала пытаюсь упорядочить данные по определенной Faction
, Затем продолжайте с помощью Score DESC
как Score DESC
ниже [все из них - type=all
]
SELECT Name, Score FROM memebers WHERE type = all GROUP BY id ORDER BY Faction = 'Viva' DESC, Faction = 'Rico' DESC, Score DESC
То, что я ожидаю получить
Name | Faction | Score
----------------------------------------
Ariticus | Viva | 14000
Siphon | Viva | 12000
Alpha | Viva | 7000
Active | Rico | 10000
Beta | Rico | 8000
Ariticus | Havoc | 15000
Taximus | More | 13000
Bravo | Morgan | 9000
Но я продолжаю получать их по заказу только по Score DESC
.
Используйте выражение case
.
ORDER BY case when Faction = 'Viva' then 1
when Faction = 'Rico' then 2
else 3 end,
Score DESC
Для mysql вы также можете попробовать ORDER BY FIELD()
если список значений фракций невелик и может быть предоставлен в аргументах, приведенных ниже:
SELECT Name, Score
FROM memebers
WHERE type = all
GROUP BY id
ORDER BY FIELD(Faction, 'Viva', 'Rico', 'Havoc', 'More','Morgan'), Score DESC;
1412
что плохо сочетается с функцией