01-MySQL- SQL syntax in the case when then else end usage

This is from someone else's blog: Address forgot

 

A: Simple Usage:

  1. The first written:

Copy the code
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 WHERE 1 = 1
Copy the code

  2. The second wording

Copy the code
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 t_b_student s WHERE 1 = 1
Copy the code

Two operating results as:

  Note that there is a problem, Case function returns only the first matching value, and the remaining part will be automatically ignored Case

II: group

Table data:

t_b_population 

sql statement:

Copy the code
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 t_b_population p GROUP BY country;
Copy the code

 operation result:

Table data:

t_b_country 

sql statement:

Copy the code
SELECT
    SUM(c.population) AS '人口', CASE c.country WHEN '中国' THEN '亚洲' WHEN '印度' THEN '亚洲' WHEN '日本' THEN '亚洲' WHEN '美国' THEN '北美洲' WHEN '加拿大' THEN '北美洲' WHEN '墨西哥' THEN '北美洲' ELSE '其他' END AS '' FROM t_b_country c GROUP BY CASE c.country WHEN '中国' THEN '亚洲' WHEN '印度' THEN '亚洲' WHEN '日本' THEN '亚洲' WHEN '美国' THEN '北美洲' WHEN '加拿大' THEN '北美洲' WHEN '墨西哥' THEN '北美洲' ELSE '其他' END;
Copy the code

运行结果:

 

这是来源于其他人的博客:地址忘了

 

一:简单用法:

  1.第一种写法:

Copy the code
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 WHERE 1 = 1
Copy the code

  2.第二种写法

Copy the code
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 t_b_student s WHERE 1 = 1
Copy the code

两个运行结果一样:

  有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略

二:分组

表数据:

t_b_population 

sql语句:

Copy the code
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 t_b_population p GROUP BY country;
Copy the code

 运行结果:

表数据:

t_b_country 

sql语句:

Copy the code
SELECT
    SUM(c.population) AS '人口', CASE c.country WHEN '中国' THEN '亚洲' WHEN '印度' THEN '亚洲' WHEN '日本' THEN '亚洲' WHEN '美国' THEN '北美洲' WHEN '加拿大' THEN '北美洲' WHEN '墨西哥' THEN '北美洲' ELSE '其他' END AS '' FROM t_b_country c GROUP BY CASE c.country WHEN '中国' THEN '亚洲' WHEN '印度' THEN '亚洲' WHEN '日本' THEN '亚洲' WHEN '美国' THEN '北美洲' WHEN 'Canada ' THEN ' North America ' the WHEN ' Mexico ' THEN ' North America ' ELSE ' other ' END;
Copy the code

operation result:

 

Guess you like

Origin www.cnblogs.com/xxrsdax/p/11607953.html