如何按任意关键字排序?

时间:2013-08-17 20:22:34

标签: mysql sql

我有以下查询:

SELECT 
        *
    FROM
        `Magic The Gathering`
    WHERE
        `set` =  'Magic 2013'
    ORDER BY
        `rarity` ASC
    LIMIT
        500

稀有由以下关键字组成:神话,稀有,罕见,普通

目前它按照alphbetically进行排序,因此它被分类为Common,Mythic,Rare,Uncommon。

如何排序稀有,以便按以下顺序显示?

史诗,稀有,罕见,普通

2 个答案:

答案 0 :(得分:1)

就这么简单:

SELECT 
    *
FROM
    `Magic The Gathering`
WHERE
    `set` =  'Magic 2013'
ORDER BY
    FIELD(`rarity`, 'Mythic', 'Rare', 'Uncoomon', 'Common') ASC
LIMIT
    500

答案 1 :(得分:1)

您可以使用MySQL中的FIELD()函数临时执行此操作,该函数返回一个整数,它是列表中匹配字符串的位置。

示例:

SELECT 
    *
FROM
    `Magic The Gathering`
WHERE
    `set` =  'Magic 2013'
ORDER BY
    FIELD(`rarity`, 'Mythic', 'Rare', 'Uncommon', 'Common') ASC
LIMIT
    500

注意反标记引号用于列标识符,而直单引号用于字符串文字。

另一种解决方案是将您的rarity列定义为ENUM('Mythic', 'Rare', 'Uncommon', 'Common'),然后您可以使用原始查询。排序顺序是枚举中字符串的顺序位置,而不是字母顺序。