SQL SELECT按特定行排序

cam*_*258 3 sql

假设我有一个food查询的表SELECT name FROM food ORDER BY name

| name
|--------
| Apple
| Banana
| Carrot
| Donut
...
Run Code Online (Sandbox Code Playgroud)

我希望指定我选择的特定项目(如果在表中)固定在顶部(例如,“柠檬”然后是“胡萝卜”)。像这样:

| name
| -------
| Lemon
| Carrot
| Apple
| Banana
| Donut
...
Run Code Online (Sandbox Code Playgroud)

我可以使用哪种SQL查询来进行这种特定排序?

Dan*_*nez 10

您可以在order by子句中使用case语句来对具有特定名称的项目进行优先级排序。

下面将通过为案例分配所有值分别为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
Run Code Online (Sandbox Code Playgroud)