登录
首页 >  数据库 >  MySQL

SQL中的case when then else end用法

来源:SegmentFault

时间:2023-02-16 15:34:20 232浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习数据库相关编程知识。下面本篇文章就来带大家聊聊《SQL中的case when then else end用法》,介绍一下MySQL,希望对大家的知识积累有所帮助,助力实战开发!

case end干啥的

类似于python中的if else判断, CASE一个字段, when这个字段的值是 '1'的时候返回'男', '2'返回'女'. END结束 as一个标题sex

SELECT
    s.s_id,
    s.s_name,
    s.s_sex,
CASE s.s_sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他'
END as sex,
    s.s_age,
    s.class_id
FROM
    student s

也可以这样写,CASE后不加字段,在 WHEN的时候指定字段名!

SELECT
    s.s_id,
    s.s_name,
    s.s_sex,
CASE
WHEN s.s_sex = '1' THEN '男'
WHEN s.s_sex = '2' THEN '女'
ELSE '其他'
END as sex,
 s.s_age,
 s.class_id
FROM
    t_b_student s

结果

举个分组的示例

统计各个国家的男女人数

分组示例

SELECT
    country,
    sum(case when p.sex=1 then p.population else 0 end) as '男',
    sum(case when p.sex=2 then p.population else 0 end) as '女'
FROM people as p 
GROUP BY country

结果

统计国家人数表中属于各个洲的的总人数

people表.png

创建表并插入数据

CREATE TABLE `people` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `country` varchar(55) DEFAULT NULL,
  `population` int(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试';

insert into people (country, population) 
VALUES
('中国', 210),
('日本', 10),
('印度', 312312),
('美国', 23);

查询

SELECT 
    case p.country 
    when '中国' then '亚洲'
    when '日本' then '亚洲'
    when '印度' then '亚洲'
    else '北美洲' 
    end as '洲',
    sum(p.population) as '人口'
FROM people as p
GROUP BY case p.country
            when '中国' then '亚洲'
            when '日本' then '亚洲'
            when '印度' then '亚洲'
            else '北美洲' 
            end

结果

结果.png

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于数据库的相关知识,也可关注golang学习网公众号。

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表