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