在MySQL中,可以使用逻辑运算符和条件语句来进行逻辑处理。
这里用法与Java中的用法相同,只是语法发生了部分变化。
case when 条件 then 结果1 else 结果2 end
注意:这里可以有多个when。
这里用力扣中的一道题举例:

这里的答案是:
- select r.a as id,
- case when r.c is null then 'Root'
- when r.c is not null and r.b = 2 then 'Inner'
- else 'Leaf' end as type
- from (
- select t.id as a,n.res as b,t.p_id as c
- from Tree t
- left join (
- select p_id,count(*) as res
- from Tree
- group by p_id
- having p_id is not null
- ) n on t.id = n.p_id
- ) r;
其中就用到了case对树的节点的连接情况进行了筛选(这是为举例临时做的,做的不好请见谅,可以去力扣官方查看优质题解),这里用到了多表查询,现在这个阶段还不能做,下图是表r,case就是对表r进行了条件处理。
这里需要注意的是,then和else后面是一个值,位置在from前,要会正确使用。
ifnull(被检测值,默认值)
函数检测是否为null,如果为null,则返回指定值,否则返回原本的值。
if(条件,条件成立的结果,条件失败的结果)
相当于if else的效果。
- SELECT HOUR('2021-01-01 12:30:45'); -- 输出 12,表示 '2021-01-01 12:30:45' 的小时部分是12
-
datediff(bigTime,smallTime):返回两个日期相差的天数;
str_to_date(字符串格式日期,格式):将日期格式的字符转换成指定格式的日期;
date_format(日期列,格式):将日期转换成字符串。
举例:
将日期格式化为年份和月份: SELECT DATE_FORMAT('2022-09-15', '%Y-%m') AS formatted_date; 结果为:'2022-09'
将日期格式化为月份和日期: SELECT DATE_FORMAT('2022-09-15', '%M %d') AS formatted_date; 结果为:'September 15'
将日期格式化为星期几: SELECT DATE_FORMAT('2022-09-15', '%W') AS formatted_date; 结果为:'Thursday'
将时间格式化为小时和分钟: SELECT DATE_FORMAT('12:30:45', '%H:%i') AS formatted_time; 结果为:'12:30'
将日期和时间格式化为完整的日期和时间: SELECT DATE_FORMAT('2022-09-15 12:30:45', '%Y-%m-%d %H:%i:%s') AS formatted_datetime; 结果为:'2022-09-15 12:30:45'
分组函数用作统计使用,又称为聚合函数或统计函数或组函数。
常用函数:
注意点: