MySQL常用函数

# 使用场景


  假设订单表查询结果中有status字段,值有(1,2,3)三种可能;1:待支付,2:已支付,3:已完成。导出查询结果需要是转义后的中文描述, 此时就可以用到case

# 使用示例


  语法规则:case status when 1 then '待支付' when 2 then '已支付' end '订单状态'

select order_id, case status when 1 then '待支付' when 2 then '已支付' else status end '订单状态' from order 
1

  end后表示导出列名,when then 用法,else表示不满足前面所有when条件后取值。

  场景2:列转行,表结构=> img.png

SELECT
	username,
	max( CASE lesson WHEN '语文' THEN score ELSE 0 END ) '语文',
	max( CASE lesson WHEN '数学' THEN score ELSE 0 END ) '数学',
	max( CASE lesson WHEN '英语' THEN score ELSE 0 END ) '英语' 
FROM
	t_course 
GROUP BY
	username
1
2
3
4
5
6
7
8
9

img.png

  场景三:如果想查询某个人选的所有课合并在一起,group by + group_comcat配置使用

SELECT
	username,
	GROUP_CONCAT( DISTINCT lesson SEPARATOR ';' ) 
FROM
	t_course 
GROUP BY
	username
1
2
3
4
5
6
7

img.png