mysql case when的用法是什么


本文摘自PHP中文网,作者coldplay.xixi,侵删。

mysql case when的用法是:1、用作简单搜索,语法为【CASE [col_name] WHEN [value1]】;2、用作搜索函数,语法为【CASE WHEN [expr] THEN [result1]】。

【相关学习推荐:mysql教程(视频)】

mysql case when的用法是:

case when 的语法有两种

简单函数

1

CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END

搜索函数

1

CASE WHEN [expr] THEN [result1]…ELSE [default] END

这两种语法有什么区别呢?

1、简单函数

1

CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END

枚举这个字段所有可能的值*

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

SELECT

    NAME '英雄',

    CASE NAME

        WHEN '德莱文' THEN

            '斧子'

        WHEN '德玛西亚-盖伦' THEN

            '大宝剑'

        WHEN '暗夜猎手-VN' THEN

            '弩'

        ELSE

            '无'

    END '装备'

FROM

    user_info;

复制代码

复制代码

SELECT

    NAME '英雄',

    CASE NAME

        WHEN '德莱文' THEN

            '斧子'

        WHEN '德玛西亚-盖伦' THEN

            '大宝剑'

        WHEN '暗夜猎手-VN' THEN

            '弩'

        ELSE

            '无'

    END '装备'

FROM

    user_info;

2、搜索函数

1

CASE WHEN [expr] THEN [result1]…ELSE [default] END

搜索函数可以写判断,并且搜索函数只会返回第一个符合条件的值,其他case被忽略

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# when 表达式中可以使用 and 连接条件

SELECT

    NAME '英雄',

    age '年龄',

    CASE

        WHEN age < 18 THEN

            '少年'

        WHEN age < 30 THEN

            '青年'

        WHEN age >= 30

        AND age < 50 THEN

            '中年'

        ELSE

            '老年'

    END '状态'

FROM

    user_info;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

聚合函数 sum 配合 case when 的简单函数实现行转列

SELECT

    st.stu_id '学号',

    st.stu_name '姓名',

    sum(

        CASE co.course_name

        WHEN '大学语文' THEN

            sc.scores

        ELSE

            0

        END

    ) '大学语文',

    sum(

        CASE co.course_name

        WHEN '新视野英语' THEN

            sc.scores

        ELSE

            0

        END

    ) '新视野英语',

    sum(

        CASE co.course_name

        WHEN '离散数学' THEN

            sc.scores

        ELSE

            0

        END

    ) '离散数学',

    sum(

        CASE co.course_name

        WHEN '概率论与数理统计' THEN

            sc.scores

        ELSE

            0

        END

    ) '概率论与数理统计',

    sum(

        CASE co.course_name

        WHEN '线性代数' THEN

            sc.scores

        ELSE

            0

        END

    ) '线性代数',

    sum(

        CASE co.course_name

        WHEN '高等数学' THEN

            sc.scores

        ELSE

            0

        END

    ) '高等数学'

FROM

    edu_student st

LEFT JOIN edu_score sc ON st.stu_id = sc.stu_id

LEFT JOIN edu_courses co ON co.course_no = sc.course_no

GROUP BY

    st.stu_id

ORDER BY

    NULL;

想了解更多编程学习,敬请关注php培训栏目!

以上就是mysql case when的用法是什么的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

mysqldump数据库备份参数详解

mysql innodb索引原理的详细介绍(代码示例)

全网最全的一篇数据库mvcc详解,不全我负责

mysql系列之十三 mysql的复制

mysql单表数据不要超过500万行:是经验数值,还是黄金铁律?

mysql如何查询所有表和字段信息

mysql怎么查询最近7天的数据

查看mysql版本的命令是什么

mysql必备的常见知识点汇总整理

mysql 实现设置多个主键的操作

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...