Как выполнить пользовательскую сортировку в предложении SQL ORDER BY?

Опубликовано: 1 Сентября, 2022

По умолчанию SQL ORDER BYsort, столбец в возрастающем порядке, но когда требуется убывающий порядок, можно использовать ORDER BY DESC. В случае, когда нам нужна пользовательская сортировка, нам нужно использовать оператор CASE, где мы должны указать приоритеты для сортировки столбца.

В этой статье давайте посмотрим, как мы можем настраивать сортировку в таблице, используя порядок, используя MSSQL в качестве сервера.

Синтаксис:

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: Теперь мы создаем таблицу. Создайте таблицу student_marks с 4 столбцами, используя следующий SQL-запрос.

Запрос:

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

Шаг 4: Просмотрите описание таблицы.

Запрос:

EXEC sp_columns student_marks

Шаг 5: запрос на вставку строк в таблицу. Вставьте строки в таблицу student_marks, используя следующий запрос SQL.

Запрос:

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  

Выход: