LeetCode 1873
1.if的用法
IF(expr,v1,v2)
其中:表达式 expr 得到不同的结果,当 expr 为真是返回 v1 的值,否则返回 v2.
**select
employee_id,
if(
employee_id%2=1 and name not like 'M%',
salary,
0
) as bonus
from employees
order by employee_id;
2.mod和left
Mod(a,b) 在sql中的意思是 a % b
Mod基础用法:如果id需要是偶数或者奇数时就可以使用mod。
mod(id,2)=1 是指id是奇数。
mod(id,2)=0 是指id是偶数。
LEFT:返回最左边的n个字符的字符串str,或NULL如果任何参数是NULL。
SELECT employee_id,
/*MOD为取余操作*/
(CASE WHEN MOD(employee_id,2)!=0 AND LEFT(name,1)!='M' THEN salary
WHEN MOD(employee_id,2)=0 OR LEFT(name,1)='M' THEN 0
END) bonus
FROM Employees
ORDER BY employee_id
3.case when 函数
UPDATE salary
SET
sex = CASE sex
WHEN ‘m’ THEN ‘f’
ELSE ‘m’
END;
语法为 case when condition(布尔值) then 值1 else 值2
SELECT
STUDENT_NAME,
(CASE WHEN score < 60 THEN '不及格'
WHEN score >= 60 AND score < 80 THEN '及格'
WHEN score >= 80 THEN '优秀'
ELSE '异常' END) AS REMARK
FROM
TABLE
4.delete的使用
1、DELETE p1
在DELETE官方文档中,给出了这一用法,比如下面这个DELETE语句👇
DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
这种DELETE方式很陌生,竟然和SELETE的写法类似。它涉及到t1和t2两张表,DELETE t1表示要删除t1的一些记录,具体删哪些,就看WHERE条件,满足就删;
这里删的是t1表中,跟t2匹配不上的那些记录。
所以,官方sql中,DELETE p1就表示从p1表中删除满足WHERE条件的记录