📜  如何在 SQL ORDER BY 子句中自定义排序?

📅  最后修改于: 2022-05-13 01:55:25.903000             🧑  作者: Mango

如何在 SQL ORDER BY 子句中自定义排序?

默认情况下 SQL ORDER BY 排序,列按升序排列,但当需要降序排列时,可以使用 ORDER BY DESC。如果我们需要自定义排序,那么我们需要使用 CASE 语句,其中我们必须提及优先级以使列排序。

在本文中,让我们看看如何使用 MSSQL 作为服务器,使用 order 在表中自定义排序。

句法:

SELECT * FROM table_name
ORDER BY CASE 
     WHEN column_field = "value1" THEN priority1
     WHEN column_field = "value2" THEN priority2
     WHEN column_field = "value3" THEN priority3
     .
     ELSE priorityn 
     END ASC

第 1 步:我们正在创建一个数据库。为此,请使用以下命令创建一个名为 GeeksforGeeks 的数据库。

询问:

CREATE DATABASE GeeksforGeeks;

第 2 步:要使用 GeeksforGeeks 数据库,请使用以下命令。

询问:

USE GeeksforGeeks

第 3 步:现在我们正在创建一个表。使用以下 SQL 查询创建具有 4 列的表 student_marks。

询问:

CREATE TABLE student_marks(
stu_id VARCHAR(20),
stu_name VARCHAR(20),
stu_branch VARCHAR(20),
total_marks INT
)

第四步:查看表的描述。

询问:

EXEC sp_columns student_marks

第 5 步:在表中插入行的查询。使用以下 SQL 查询将行插入到 student_marks 表中。

询问:

INSERT INTO student_marks
VALUES( '1001','PRADEEP','E.C.E', 550),
( '1002','KIRAN','E.C.E', 540),
( '5001','PRANAV','I.C.E', 450),
( '2001','PADMA','C.S.E', 570),
( '2002','SRUTHI','C.S.E', 480),
( '2003','HARSITHA','C.S.E', 534),
( '3001','SAI','I.T', 560),
( '3002','HARSH','I.T', 510),
( '4001','HARSHINI','E.E.E', 500) 

第 6 步:查看插入的数据

询问:

SELECT * FROM student_marks

  • 根据 CSE、IT、ECE、ICE、EEE 的分支顺序对自定义排序的查询也显示了使用 ORDER BY 的默认排序之间的差异。

默认按 ORDER BY 排序:

SELECT * FROM student_marks
ORDER BY stu_branch 

输出:

按 ORDER BY 自定义排序:

SELECT * FROM student_marks
ORDER BY CASE
         WHEN stu_branch = 'C.S.E' then 1
         WHEN stu_branch = 'I.T' then 2 
         WHEN stu_branch = 'E.C.E' then 3
         WHEN stu_branch = 'I.C.E' then 4
         WHEN stu_branch = 'E.E.E' then 5
         END ASC  

输出: