假设我有一张 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/