我有以下查询:
SELECT
*
FROM
`Magic The Gathering`
WHERE
`set` = 'Magic 2013'
ORDER BY
`rarity` ASC
LIMIT
500
稀有由以下关键字组成:神话,稀有,罕见,普通
目前它按照alphbetically进行排序,因此它被分类为Common,Mythic,Rare,Uncommon。
如何排序稀有,以便按以下顺序显示?
史诗,稀有,罕见,普通
答案 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')
,然后您可以使用原始查询。排序顺序是枚举中字符串的顺序位置,而不是字母顺序。