MySql - заказать результат запроса в «некотором режиме»

0

У меня есть эти данные в таблице:

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.

Как это сделать? свидания

Теги:

2 ответа

1
Лучший ответ
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
3

Вы должны сохранить поля в отдельной таблице и дать им порядок сортировки. Затем вы можете присоединиться к этой таблице.

Кроме того, что позволяет вам сортировать эффективно, это также делает структуру таблицы более реляционной - что хорошо.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню