mysql - SQL 排序中的排序

标签 mysql sql

好吧,我认为这应该是一个相当简单的问题,但还没有弄明白。

我有一个名为 Staff 的表。工作人员DESC如下:

SQL> DESC Staff
Name                                      Null?    Type
----------------------------------------- -------- ----------
SNO                                       NOT NULL CHAR(5)
FNAME                                              VARCHAR2(3
LNAME                                              VARCHAR2(3
POSITION                                           VARCHAR2(1
SEX                                                CHAR(1)
DOB                                                DATE
SALARY                                             NUMBER(9)
BNO                                                CHAR(4)

这是我正在使用的当前查询:

SELECT bNo, lName||' '||fName, position, salary
FROM Staff
WHERE bNo 'b009'
OR bNo = 'b005'
ORDER BY 
    case position
        when 'Manager' then 1
        when 'Secretary' then 2
        when 'Supervisor' then 3
        when 'Assistant' then 4
    else 99
end;

我遇到的问题是,在每个位置组中,我还需要按 lName 进行排序。任何提示将非常感谢。提前致谢。

最佳答案

只需添加 lName 作为第二个 ORDER BY 列。

ORDER  BY CASE position
            WHEN 'Manager' THEN 1
            WHEN 'Secretary' THEN 2
            WHEN 'Supervisor' THEN 3
            WHEN 'Assistant' THEN 4
            ELSE 99
          END,
          lName; 

关于mysql - SQL 排序中的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12538352/

相关文章:

javascript - 如何在angularjs中的条件语句中显示数据

python - Docker + Airflow - 无法从 docker 容器连接到主机上的 MySQL

mysql - 从另一个表中获取最新的而不是最旧的项目

mysql - 如何从sql表或sql数据库中导出所有单词

MYSQL:多个表的平均计数

sql - 当没有 INSERT 语句时,为什么我得到 "String or Binary Data would be Truncated Error"?

mysql - 如何引用列的查询值与存储值?

php - 单击按钮在表中插入值

mysql - Lambda 函数 MySQL 结果不适用于 NodeJs 8.10

SQL 插入行的顺序重要吗?