首页 > 解决方案 > 如何在 SQL 中将数据与静态数据集连接起来

问题描述

在 DB 中,我有类似 varchar 的字段name, ENUMENUM可能是:高、中、低。

我需要按 ENUM 但按优先级(如high -> medium -> low)对数据进行排序。

我无法在数据库中创建可以执行连接的表,所以我的问题是可以在 SQL 查询中定义动态映射(如高为 2,中为 1,低为 0)然后按整数排序?

标签: sql

解决方案


您可以使用case

order by (case enum when 'high' then 1 when 'medium' then 2
                    when 'low' then 3 else 4
          end)

一些数据库有专门的函数来简化这一点。例如,MySQL 有field()

order by field(enum, 'high', 'medium', 'low')

或者,如果您想获得正确的顺序但代码难以理解,您可以使用最后一个字母:

order by right(enum, 1)

推荐阅读