MySql - 在“某种模式”下命令查询结果

时间:2010-10-05 13:00:58

标签: mysql

我在桌子上有这些数据:

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 个答案:

答案 0 :(得分: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

答案 1 :(得分: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