sql - SQL SELECT 按特定行排序
问题描述
假设我有一个表food
,我查询SELECT name FROM food ORDER BY name
:
| name
|--------
| Apple
| Banana
| Carrot
| Donut
...
我希望指定将我选择的特定项目固定在顶部(例如“柠檬”,然后是“胡萝卜”),如果它们在表中。像这样:
| name
| -------
| Lemon
| Carrot
| Apple
| Banana
| Donut
...
我可以使用哪种 SQL 查询来获得这种特定的排序?
解决方案
您可以在 order by 子句中使用 case 语句来确定具有特定名称的项目的优先级。
下面将通过从案例中为 Lemon 和 Carrot 分配值 1 和 2 来将 Lemon 和 Carrot 按优先级排序,其中所有其他人将获得值 3。剩下的分配为 3 的那些将按顺序中的第二个表达式排序子句,它只是名称列。
SELECT *
FROM food
ORDER BY
CASE name
WHEN 'Lemon' THEN 1
WHEN 'Carrot' THEN 2
ELSE 3
END,
name
推荐阅读
- android - 数据绑定库 - 通过变量设置 ID
标签 - flutter - 部分屏幕的颤振导航
- python - 从没有脚本文件的命令行执行python程序
- python - Python双打印字符串
- android - 多对一连接,但显示为一个结果
- python - Azure IoT Edge 自定义模块未连接到 IoT-Hub-Container
- php - Wordpress 导航崩溃 - PHP 错误
- android - 将验证添加到 Register.java 文件后,数据未插入 mysql 数据库
- c# - 处理大型数字输入和输出十六进制字符串
- javascript - 使用jquery隐藏重复的div