前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL:搞懂case语句,看这篇就可以啦!

SQL:搞懂case语句,看这篇就可以啦!

作者头像
万能数据的小草
发布2024-07-23 15:17:14
5230
发布2024-07-23 15:17:14
举报
文章被收录于专栏:万能的小草

SQL里CASE 语句允许数分同学在查询中执行条件逻辑。了解如何使用其功能可以显著增强工作效率和数据处理的能力。在本文中,我们将深入探讨 SQL CASE 语句,涵盖其语法、各种用例,并提供实用的代码示例来巩固大家的理解。

Part1-了解 SQL CASE 语句

CASE 语句提供了在 SQL 查询中执行条件逻辑的方法。它评估一组条件并根据第一个评估为 true 的条件返回结果。

CASE语句的语法如下:

代码语言:javascript
复制
CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
END

以下是每个部分的细分:

  • CASE: 开始 CASE 语句。
  • WHEN condition THEN result:指定条件以及条件为 true 时的相应结果。
  • ELSE default_result:如果不满足任何条件,则使用默认值。
  • END:结束 CASE 语句。

Part2-深入了解常见用例。

1. 简单的CASE语句

将表达式与一组简单值进行比较以确定结果。

代码语言:javascript
复制
SELECT
    order_id,
    CASE customer_id
        WHEN 1 THEN 'VIP1'
        WHEN 2 THEN 'VIP2'
        WHEN 3 THEN 'VIP3'
        ELSE 'Regular'
    END AS customer_type
FROM orders;

2. CASE语句判定

判定多个条件并根据第一个为 true 的条件返回结果。

代码语言:javascript
复制
    order_id,
    CASE
        WHEN order_amount > 1000 THEN 'High'
        WHEN order_amount > 500 THEN 'Medium'
        ELSE 'Low'
    END AS order_priority
FROM orders;

3. 在 WHERE 子句中使用 CASE

使用 SQL CASE 语句根据特定条件过滤数据。

代码语言:javascript
复制
SELECT *
FROM customers
WHERE CASE
    WHEN country = 'China' THEN sales_region = 'Asia'
    WHEN country = 'UK' THEN sales_region = 'Europe'
    ELSE FALSE
END;

4. 将 CASE 与聚合函数结合使用

执行case语句,进行聚合数据。

代码语言:javascript
复制
SELECT
    department,
    COUNT(CASE WHEN salary > 50000 THEN 1 END) AS high_salary_count,
    COUNT(CASE WHEN salary <= 50000 THEN 1 END) AS low_salary_count
    -- 如果薪水大于50000,则为高收入人群,若薪水小于50000,则为低收入人群
FROM employees
GROUP BY department;

5. 嵌套 CASE 语句

相互嵌套处理更复杂的条件。

代码语言:javascript
复制
SELECT
    order_id,
    CASE
        WHEN payment_status = 'paid' THEN
            CASE
                WHEN shipping_status = 'shipped' THEN 'Delivered'
                ELSE 'Processing'
                --限定支付状态(payment_status )为支付完成,并且快递状态为“已发货”
            END
        ELSE 'Pending'
    END AS order_status
FROM orders;

6. 在 JOIN 条件中使用 CASE

根据特定条件进行多表关联。

代码语言:javascript
复制
SELECT
    o.order_id,
    o.order_date,
    c.customer_name
FROM orders o
JOIN customers c
ON CASE
    WHEN o.customer_id = 1 THEN c.customer_id = o.customer_id
    WHEN o.customer_id = 2 THEN c.country = 'China'
    ELSE c.country = 'UK'
END;

三、结论

掌握CASE 语句使我们能够直接在 SQL 查询中执行复杂的条件逻辑。无论对数据进行分类、对结果进行优先级排序,还是进行过滤,CASE 语句都是一个宝贵工具。通过了解其语法并探索实际示例,可以在数据库操作中充分利用 SQL CASE 语句的潜力。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 万能数据的小草 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 简单的CASE语句
  • 2. CASE语句判定
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档