我有以下查询:
SELECT
*
FROM
`Magic The Gathering`
WHERE
`set` = 'Magic 2013'
ORDER BY
`rarity` ASC
LIMIT
500稀有性由以下关键词组成:神话、稀有、罕见、常见
目前,它按字母顺序排列,所以它被归类为普通的,神话的,稀有的,不常见的。
如何对稀有性进行排序,以便按以下顺序显示?
神秘的,罕见的,罕见的,普通的
发布于 2013-08-17 20:29:04
您可以通过在字段()中使用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'),然后可以使用原始查询。排序顺序将根据字符串在枚举中的序号位置,而不是字母顺序。
发布于 2013-08-17 20:24:48
就这么简单:
SELECT
*
FROM
`Magic The Gathering`
WHERE
`set` = 'Magic 2013'
ORDER BY
FIELD(`rarity`, 'Mythic', 'Rare', 'Uncoomon', 'Common') ASC
LIMIT
500https://stackoverflow.com/questions/18292971
复制相似问题