我有以下查询:
SELECT
*
FROM
`Magic The Gathering`
WHERE
`set` = 'Magic 2013'
ORDER BY
`rarity` ASC
LIMIT
500
稀有度由以下关键词组成:Mythic, Rare, Uncommon, Common
目前它按字母顺序排序,因此它被排序为普通、神话、稀有、罕见。
如何对稀有度进行排序以使其按以下顺序显示?
神话,稀有,不常见,常见
最佳答案
您可以使用 FIELD() 临时执行此操作MySQL中的函数,它返回一个整数,它是匹配字符串在列表中的位置。
例子:
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')
,然后您可以使用您的原始查询。排序顺序将按照字符串在枚举中的顺序位置,而不是字母顺序。
关于mysql - 如何按任意关键字排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18292971/