2016-09-20 64 views
0

我不太确定标题是否有意义,但我会更详细地解释。MySQL按特定数据条目对数据进行排序

所以我有一个表命名为“成员”具有字段名“排名”下的行列(上校,少校,CPT)的列表

我想通过等级名称从去对数据进行排序最高排名(Col)到最低排名(Rct)。

我将包含我的桌面截图,以防万一我无意义。

Table screenshot

+3

就我个人而言,我会添加一个新的[Ranks]表,添加3个字符串值和一个整数OrderValue列,设置一个关键的关系,加入您的查询和Rank.OrderValue秩序 –

回答

0

我认为亚历克斯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样子:

山口| 2

主| 1

第| 0

+0

感谢您的答复。所以我会创建一个名为行列的新表,然后在所有行列中填入该表。 – JoshWalki

+0

这取决于你想要做什么。如果你只是想按字母顺序排序,那么你可以继续使用你的会员表。如果你想按照他们的等级的实际值对他们进行排序,那么我会创建等级表并填充等级和该等级的“价值”。 例如,Private是您可以实现的第一级别。队长是你可以实现的第二等级。 这将允许您命名任何你想要的排名并按价值排序。 Private的值为1,Captain的值为2. – BenG

+0

如果我要给他们一个值,那么我可以按他们的顺序排列顺序,我该如何设置它? – JoshWalki