У меня есть эти данные в таблице:
id name field
0 marco attack
1 andrea defense
2 luca medium
3 ernesto defense
4 vittorio medium
5 manuele attack
Мне нужно заказать как поле. НО, порядок списка приоритетов (для моего примера) должен быть защитой-средней атакой.
чтобы он возвращался:
andrea, ernesto, luca, vittorio, marco, manuele.
Как это сделать? свидания
SELECT
X.id,
X.name,
X.field
FROM (
SELECT id,
name,
field,
CASE field WHEN 'defense' THEN 1
WHEN 'medium' THEN 2
WHEN 'attack' THEN 3
END AS SortValue
FROM MyTable) AS X
ORDER BY X.SortValue
Вы должны сохранить поля в отдельной таблице и дать им порядок сортировки. Затем вы можете присоединиться к этой таблице.
Кроме того, что позволяет вам сортировать эффективно, это также делает структуру таблицы более реляционной - что хорошо.
id field sort
1 defense 1
2 medium 2
3 attack 3
id name field
0 marco 3
1 andrea 1
2 luca 2
3 ernesto 1
4 vittorio 2
5 manuele 3
select p.name,
ps.field
from players p
join playersort ps
on p.field = ps.id
order by ps.sort