mysql - 如何按任意关键字排序?

标签 mysql sql

我有以下查询:

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/

相关文章:

sql - 将多个 SQL 字段组合成 1 个输出行

mysql - SSRS显示基本信息

mySQL查询,合并两行并添加另一列作为输出结果

sql - 我应该把 .mdf 和 .ldf 文件放在哪里才能通过 git 共享 SQL 脚本

使用 Spring JDBC 执行 SQL 函数

mysql - 此更改如何影响此数据库查询的速度?

php - 为什么我的自定义密码重置链接被视为无效?

sql - 使用聚合函数更新 json 数组

MySQL 用户保留和日常

mysql - 如何将表内的属性引用到同一表内新行内的值