SQL SELECT 按特定行排序

标签 sql

假设我有一张 table 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 放在优先顺序中,从 case 中为它们分配 1 和 2 的值,其中所有其他的都将得到值 3。那些被分配为 3 的剩余的将按顺序按第二个表达式排序子句,这只是名称列。

SELECT *
FROM food
ORDER BY
  CASE name
    WHEN 'Lemon' THEN 1
    WHEN 'Carrot' THEN 2
    ELSE 3
  END,
  name

关于SQL SELECT 按特定行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55053638/

相关文章:

sql - 如何通过SQL查询计算带宽

SQL(postgres)在插入/更新后从多个表返回数据

C# SQL 连接字符串

c# - NHibernate 不只保存一个属性

MySQL : Error Code 1114. 表已满(表甚至不存在)

sql - 查询表达式 '* b_forte ORDER BY ProdDate DESC' 错误消息中的语法错误(缺少运算符)

sql - Postgres : Convert single rows from multiple tables into multiple rows in a single table

mySQL - 将日期字段分组为周并对数据求和

sql - 查询以从按一个字段分组的动态表中获取最后插入的行

sql - 删除具有跨多个值的开始和结束时间戳的部分/完全重叠事件