mysql中的case when

一、case when 后的select后的简单函数例子

表的内容如下:
在这里插入图片描述

SELECT CASE id 
		WHEN 2 THEN '第二条' 
		WHEN 3 THEN '第三条' 
		ELSE '其他条' END AS newid,
		uname,
		number,
		uid FROM test_key_order;

结果如下:
在这里插入图片描述

二、case when 后的select后的搜索函数例子

SELECT
    CASE
WHEN parent_id < 3 THEN
    '<3'
WHEN parent_id >= 3
AND parent_id < 5 THEN
    '>=3 && <5'
ELSE
    '>=5'
END AS parent_id_new ,
parent_id ,
type_id ,
type_name
FROM
    tdb_goods_types

对一和二的总结

when 后面可以是两种数据类型,一种是和case后的类型保持一致;第二种是布尔类型。
如果是true,则返回then后面的值;如果是false,则返回else后面的值。如果没有else,则返回null。

三、case when 的行转列的例子

参考资料:
1、MySQL中Case When用法详解

注意:除了创建视图外,还可以通过取【最大值】和【分组】来解决case when语句查询出来的结果重复问题(多出现的0数据)。
SELECT CASE WHEN Cid = 1 THEN score ELSE 0 END AS 课程1, 
	CASE WHEN Cid = 2 THEN score ELSE 0 END AS 课程2,
	CASE WHEN Cid = 3 THEN score ELSE 0 END AS 课程3,
	Sid
FROM SC ;

上面语句执行结果如下:

在这里插入图片描述
优化后的sql语句如下:

SELECT MAX(CASE WHEN Cid = 1 THEN score ELSE 0 END) AS 课程1, 
	MAX(CASE WHEN Cid = 2 THEN score ELSE 0 END )AS 课程2,
	MAX(CASE WHEN Cid = 3 THEN score ELSE 0 END) AS 课程3,
	Sid
FROM SC GROUP BY Sid;

在这里插入图片描述

在这里插入图片描述

3.1、视图的概念及作用

视图是由查询结果形成的一张虚拟表,视图也包含行和列,就像一个真实的表,但是不存储任何数据,获得数据,是关联其他表进行查询的。
上图中的视图的创建,前提是只针对查询语句,具体什么时候用?该查询结果经常被用作子查询或者出现的比较频繁。

猜你喜欢

转载自blog.csdn.net/weixin_43983411/article/details/110079301
今日推荐