深入理解 MySQL 中的 CASE 语句:从基础到实战

打印 上一主题 下一主题

主题 825|帖子 825|积分 2475

在数据库处置惩罚中,条件逻辑是不可或缺的部分,特别是在必要根据某些条件动态改变输出效果时。MySQL 的 CASE 语句提供了一种强大的方式来实现这种逻辑,让你可以在 SQL 查询中包含条件分支。本文将深入探究 CASE 语句的使用方法,并通过实例加深理解。
什么是 CASE 语句?

CASE 语句相当于编程中的 if-else 或 switch 语句。它根据条件表达式的值选择不同的实行路径。MySQL 中的 CASE 语句有两种形式:
简单 CASE 语句

  1. CASE value_expression
  2.     WHEN value1 THEN result1
  3.     WHEN value2 THEN result2
  4.     ...
  5.     ELSE resultN
  6. END
复制代码


  • value_expression 是要比力的表达式。
  • WHEN valueN THEN resultN 是基于 value_expression 的比力效果来选择的分支。
  • ELSE resultN 是所有 WHEN 条件都不满意时的默认效果。
搜索 CASE 语句

  1. CASE
  2.     WHEN condition1 THEN result1
  3.     WHEN condition2 THEN result2
  4.     ...
  5.     ELSE resultN
  6. END
复制代码


  • WHEN conditionN THEN resultN 直接基于条件表达式 conditionN 的真值来选择实行的分支。
  • ELSE resultN 是所有条件都不满意时的默认效果。
CASE 语句的用途

CASE 语句的用途非常广泛,比如:


  • 数据分类:根据某些条件对数据举行分类,返回不同的标签或值。
  • 动态排序:根据不同的条件对效果集举行排序。
  • 条件计算:举行复杂的计算,计算规则根据行中的数据动态变革。
实际例子

让我们通过几个例子来具体看看 CASE 语句的应用。
示例 1:数据分类

假设我们有一个销售数据表,我们想根据销售量对销售情况举行分类:
  1. SELECT
  2.     ProductName,
  3.     Sales,
  4.     CASE
  5.         WHEN Sales < 100 THEN 'Low'
  6.         WHEN Sales BETWEEN 100 AND 500 THEN 'Medium'
  7.         ELSE 'High'
  8.     END AS SalesCategory
  9. FROM SalesData;
复制代码
这个查询会返回每个产物的销售量,并根据销售量将其分类为 ‘Low’, ‘Medium’, 或 ‘High’。
示例 2:动态排序

假如我们想根据用户的选择对效果举行排序,CASE 语句也能派上用场:
  1. SELECT *
  2. FROM Products
  3. ORDER BY
  4.     CASE WHEN UserPreference = 'Price' THEN Price
  5.          WHEN UserPreference = 'Rating' THEN Rating
  6.     END;
复制代码
这个查询根据用户的偏好(价格或评级)来对产物举行排序。
示例 3:条件计算

回到您提出的具体问题,我们有一个 video_view 表,此中 view_count 列包含了一些以 “万” 末端的字符串值。我们想要筛选出查看次数凌驾 10000 的记录:
  1. SELECT
  2.     COUNT(*) AS count,
  3.     product_type
  4. FROM
  5.     video_view
  6. WHERE
  7.     product_type != 0
  8.     AND create_time BETWEEN '2024-01-27 11:02:10' AND '2024-03-27 11:02:10'
  9.     AND (
  10.         CASE
  11.             WHEN view_count LIKE '%万%' THEN CAST(REPLACE(view_count, '万', '') AS DECIMAL(10, 2)) * 10000
  12.             ELSE CAST(view_count AS DECIMAL(10, 2))
  13.         END
  14.     ) > 10000
  15. GROUP BY
  16.     product_type
  17. ORDER BY
  18.     count DESC;
复制代码
这个例子演示了如何使用 CASE 语句团结字符串函数和数学运算,将格式不统一
的数据标准化处置惩罚,以举行有效的数据筛选。
总结

MySQL 中的 CASE 语句是一个强大的工具,能够让我们根据条件动态地控制 SQL 查询的行为。无论是举行数据分类、动态排序照旧复杂的条件计算,CASE 语句都能派上用场,让我们的查询更加机动和强大。盼望通过这些例子,你能更好地理解和使用 CASE 语句,提拔你的 SQL 技能。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表