2016-09-20 3 views
0

Я не слишком уверен, что название имеет смысл, но я объясню более подробно.Данные сортировки MySQL по конкретным записям данных

Так что я таблица с именем «членами», который имеет список рангов (Col, майор, CPT) под полем имени «ранга»

Я хотел бы упорядочить данные по имени ранга происходит от высший ранг (Col) до самого низкого ранга (Rct).

Включу скриншот моей таблицы на всякий случай, если у меня нет смысла.

Table screenshot

+3

Лично я бы добавил новую таблицу [Ranks], добавил 3 строковых значения и целочисленный столбец OrderValue, установил отношения ключей, JOIN в вашем запросе и порядке по Rank.OrderValue –

ответ

0

Я думаю, что решение Alex K. является лучшим. Вы ищете что-то вроде

select * from members order by rank desc; Это вернет их в порядке убывания в алфавитном порядке. Если вы определили таблицу ранга, как Алекс говорит вы могли бы сделать:

select t.* 
from members t join rank_table rt on t.rankname = rt.rankname 
order by rt.rankvalue desc; 

В этом решении rank_table выглядит как:

Col | 2

Maj | 1

Крышка | 0

+0

Спасибо за ответ. Итак, я бы сделал новую таблицу с именами рангов, а затем заполнил эту таблицу всеми рангами? – JoshWalki

+0

Это зависит от того, что вы хотите сделать. Если вы просто хотите отсортировать их по алфавиту, вы можете продолжить работу со своей таблицей участников. Если вы хотите отсортировать их по фактическому значению своего ранга, я бы создал таблицу рангов и заполнил ее рангами и «значением» этого ранга. Например, Private - это первый уровень, которого вы можете достичь. Капитан - это второй уровень, которого вы можете достичь. Это позволит вам назвать ранги независимо от того, что вы хотите, и отсортировать их по порядку величины. Частное имеет значение 1, капитан имеет значение 2. – BenG

+0

Если бы я должен был дать им значение, чтобы я мог заказать им правильный порядок рангов, как его установить? – JoshWalki