MySQL的CASE WHEN语句是在查询时进行条件判断和赋值的工具。它可以让我们根据不同的条件进行求值,并根据其结果分支执行不同的操作。以下是几个使用实例。
示例1: 根据值进行条件判断与赋值
为了更好的演示我们的示例,我们新建一张stus表:
CREATE TABLE stus (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
sex CHAR(1) NOT NULL,
score int NOT NULL
);
现在我们假设我们要为stus表中的成绩score字段进行等第评定,将90分以上评定为优秀,80-90分评定为良好,70-80分评定为中等,60-70分评定为及格,60分以下评定为不及格。我们可以使用CASE WHEN语句来实现这个操作:
SELECT
*,
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 80 AND score < 90 THEN '良好'
WHEN score >= 70 AND score < 80 THEN '中等'
WHEN score >= 60 AND score < 70 THEN '及格'
ELSE '不及格'
END AS grade
FROM
stus;
这里的CASE WHEN语句会根据score字段的值判断其成绩等第,然后将结果作为新建的grade字段的值返回。注意,这里的END AS grade语句是为了将CASE WHEN表达式的结果作为新建的字段grade。
示例2: 联表查询实现条件分支判断
假如我们现在有一张orders表,记录了所有的订单信息,并且每个订单都有一个商品编号(goods_id)字段,我们需要查询商品名称。但是商品名称位于goods表中,我们需要通过商品编号将orders表和goods表联表查询,然后将商品名称作为新建的字段name返回。下面是使用CASE WHEN语句进行联表查询的示例:
SELECT
o.*,
CASE g.id
WHEN 1 THEN '苹果'
WHEN 2 THEN '鸭梨'
WHEN 3 THEN '葡萄'
ELSE '未知商品'
END AS name
FROM
orders o
LEFT JOIN goods g ON o.goods_id = g.id;
这里我们使用了LEFT JOIN将orders表和goods表联表查询,然后使用CASE WHEN语句进行制定商品名称的筛选,并且将结果作为新建的name字段返回。
以上就是两个MySQL的CASE WHEN语句使用实例。通过CASE WHEN语句的使用可以帮助我们更加方便、灵活地进行条件判断、赋值和联表查询等操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL的CASE WHEN语句的几个使用实例 - Python技术站