MySQLcasewhen⽤法
来⾃MySQL触发器⾥的流程控制语句知识。
MySQL 的 case when 的语法有两种:
1. 简单函数
CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END
2. 搜索函数
CASE WHEN [expr] THEN [result1]…ELSE [default] END
这两种语法有什么区别呢?
简单函数
CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END:枚举这个字段所有可能的值*
SELECT
html5培训有用吗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;
搜索函数
CASE WHEN [expr] THEN [result1]…ELSE [default] END:搜索函数可以写判断,并且搜索函数只会返回第⼀个符合条件的值,其他case被忽略# when表达式中可以使⽤and连接条件
spire免费版和收费版的区别SELECT
NAME '英雄',
age '年龄',
CASE
WHEN age <18THEN
'少年'
数据库管理系统又称操作系统WHEN age <30THEN
'青年'
WHEN age >=30
AND age <50THEN
'中年'
ELSE
'⽼年'
java编程猜数游戏END'状态'
FROM
user_info;
聚合函数sum配合case when的简单函数实现⾏转列SELECT
st.stu_id '学号',
st.stu_name '姓名',
sum(
urse_name
WHEN'⼤学语⽂'THEN
sc.scores
ELSE
END
) '⼤学语⽂',
sum(
urse_name
WHEN'新视野英语'THEN
sc.scores
ELSE
END
) '新视野英语',
sum(
urse_name
WHEN'离散数学'THEN
sc.scores
ELSE
END
) '离散数学',
sum(
urse_name
WHEN'概率论与数理统计'THEN
sc.scores
ELSE
END
) '概率论与数理统计',
sum(
urse_name
WHEN'线性代数'THEN
sc.scores
ELSE
END
) '线性代数',
sum(
urse_name
WHEN'⾼等数学'THEN
sc.scores
ELSE
END
)
'⾼等数学'
FROM
edu_student st
LEFT JOIN edu_score sc ON st.stu_id = sc.stu_id
LEFT JOIN edu_courses co urse_no = sc.course_no GROUP BY
st.stu_id
ORDER BY
NULL;
⾏转列测试数据
-- 创建表学⽣表
CREATE TABLE `edu_student` (
`stu_id` VARCHAR (16) NOT NULL COMMENT '学号',
`stu_name` VARCHAR (20) NOT NULL COMMENT '学⽣姓名',
PRIMARY KEY (`stu_id`)
) COMMENT ='学⽣表' ENGINE = INNODB;
-- 课程表
CREATE TABLE `edu_courses` (
`course_no` VARCHAR (20) NOT NULL COMMENT '课程编号',
`course_name` VARCHAR (100) NOT NULL COMMENT '课程名称', PRIMARY KEY (`course_no`)
)
COMMENT ='课程表' ENGINE = INNODB;
-- 成绩表
CREATE TABLE `edu_score` (
`stu_id` VARCHAR (16) NOT NULL COMMENT '学号',
`course_no` VARCHAR (20) NOT NULL COMMENT '课程编号',
`scores` FLOAT NULL DEFAULT NULL COMMENT '得分',
PRIMARY KEY (`stu_id`, `course_no`)
) COMMENT ='成绩表' ENGINE = INNODB;
-- 插⼊数据
-- 学⽣表数据
INSERT INTO edu_student (stu_id, stu_name)
VALUES
('1001', '盲僧'),
('1002', '赵信'),
('1003', '皇⼦'),
('1004', '寒冰'),
('1005', '蛮王'),
('1006', '狐狸');
mysql怎么读英语-- 课程表数据
INSERT INTO edu_courses (course_no, course_name)
VALUES
重定向命令 》 的作用是('C001', '⼤学语⽂'),
('C002', '新视野英语'),
('C003', '离散数学'),
(
'C004',
'概率论与数理统计'
),
('C005', '线性代数'),
('C006', '⾼等数学');
-- 成绩表数据
INSERT INTO edu_score (stu_id, course_no, scores)
VALUES
('1001', 'C001', 67), ('1002', 'C001', 68), ('1003', 'C001', 69), ('1004', 'C001', 70), ('1005', 'C001', 71), ('1006', 'C001', 72), ('1001', 'C002', 87), ('1002', 'C002', 88), ('1003', 'C002', 89), ('1004', 'C002', 90), ('1005', 'C002', 91), ('1006', 'C002', 92), ('1001', 'C003', 83), ('1002', 'C003', 84), ('1003', 'C003', 85), ('1004', 'C003', 86), ('1005', 'C003', 87), ('1006', 'C003', 88), ('1001', 'C004', 88), ('1002', 'C004', 89), ('1003', 'C004', 90), ('1004', 'C004', 91), ('1005', 'C004', 92), ('1006', 'C004', 93), ('1001', 'C005', 77), ('1002', 'C005', 78), ('1003', 'C005', 79);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论