【无标题】

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条件的记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值