sql - 如何在 SQL 中将数据与静态数据集连接起来
问题描述
在 DB 中,我有类似 varchar 的字段name, ENUM
,ENUM
可能是:高、中、低。
我需要按 ENUM 但按优先级(如high -> medium -> low
)对数据进行排序。
我无法在数据库中创建可以执行连接的表,所以我的问题是可以在 SQL 查询中定义动态映射(如高为 2,中为 1,低为 0)然后按整数排序?
解决方案
您可以使用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)
推荐阅读
- python - 使用 python web 抓取获取 UnboundLocalError
- javascript - 如何将html页面转换为vue页面?
- url - 以 -2、-3 结尾的重定向 URL
- powershell - TeamCity Kotlin DSL:如何从位于 DSL 文件夹中的文件运行 PowerShell 脚本
- python-3.x - HTTPError:HTTP 错误 404:在 python 3 中未找到
- python - 在python,pygame中腌制游戏数据
- reactjs - 反应中的加载状态:重新渲染太多。React 限制渲染次数以防止无限循环
- java - Android 9.0 的 ListView 自定义适配器 - NullPointerException
- javascript - 解析 JSON 数据,然后将其所有值传递给另一个函数
- mysql - JavaFx应用数据库字体表示问题