📜  在 ORDER BY 子句中使用 CASE 按 SQL 中 2 列的最小值对记录进行排序

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

在 ORDER BY 子句中使用 CASE 按 SQL 中 2 列的最小值对记录进行排序

在本文中,我们将看到如何在 ORDER BY 子句中使用 CASE 来按 SQL 中 2 列的最小值对记录进行排序。

案例声明:

该语句包含一个或多个条件及其相应的结果。当满足条件时,它停止读取并返回相应的结果(类似于 IF-ELSE 语句)。

如果没有条件为真,则返回在 CASE 语句中的 ELSE 子句中指定的值。如果语句中不存在 ELSE 子句,它将返回 NULL。



案例语法:

CASE
   WHEN condition1 THEN result1
   WHEN condition2 THEN result2
   WHEN condition3 THEN result3
   ELSE result
END;

ORDER BY:该关键字用于按升序或降序对结果集进行排序。默认情况下,它按升序对记录进行排序。 ASC 或 DESC 是分别按升序或降序对记录进行排序的关键字。

按语法排序:

SELECT column_name1, column_name2, ...
FROM table_name
ORDER BY column_name1, column_name2, ... ASC|DESC;

步骤 1:创建数据库

使用以下 SQL 语句创建名为 geeks 的数据库。

询问:

CREATE DATABASE geeks;

步骤 2:使用数据库

使用以下 SQL 语句将数据库上下文切换到 geeks。



询问:

USE geeks;

第 3 步:表定义

我们的极客数据库中有以下 demo_table。

询问:

CREATE TABLE demo_table(
ID int,
NAME VARCHAR(20),
APPLE int,
ORANGE int);

第 4 步:向表中插入数据

询问:

INSERT INTO demo_table VALUES
(1, 'Romy', 45, 7),
(2, 'Rinkle', 20, 25),
(3,'Shalini', 22, 29),
(4, 'Akanksha',50, 55),
(5,'Ayushi', 40, 13);

步骤 5:在 ORDER BY 子句中使用 CASE 按 2 列的最小值对记录进行排序

为了演示,我们将使用 'ORANGE' 和 'APPLE' 列的最小值对表进行排序。

询问:

SELECT * FROM demo_table
ORDER BY CASE  
          WHEN  APPLE< ORANGE THEN APPLE
          ELSE ORANGE
        END

输出:

输出说明:

  • ID=1 排在第一位,因为 ID=1 的橙色列在表中的记录最低。
  • ID=5 是第二个,因为 ID=5 的橙色列在表中具有第二低的记录。
  • ID= 2 是第三个,因为如果 ID=2 的 Apple 列在表中具有第三低的记录,依此类推。