当前位置:网站首页>【LeetCode】【SQL】刷题笔记
【LeetCode】【SQL】刷题笔记
2022-06-30 18:55:00 【myaijarvis】
code格式规范:所有关键字大写,关键字右边对齐,子句缩进
列名最好和表中的列名一样(大小写一样)
SELECT name
FROM customer C
WHERE C.id NOT IN ( SELECT C1.id
FROM customer C1
WHERE C1.referee_id = 2 );
参考资料:
官方文档:【参考:MySQL :: MySQL 5.7 参考手册 :: 13 SQL 语句】
【参考:SQL中的谓词 - 知乎】
题目以类型归类,记录常用且易错的类型
IS NULL
【参考:584. 寻找用户推荐人 【比官方细,千字干货!】(三值运算,NULL) - 寻找用户推荐人 - 力扣(LeetCode)】
【参考:584. 寻找用户推荐人 - 简单 - 力扣(LeetCode)】
SELECT name FROM customer WHERE referee_id != 2 OR referee_id IS NULL;
多表查询
【参考:183. 从不订购的客户 - 力扣(LeetCode)】
- 子查询
select customers.name as 'Customers' # as 别名
from customers
where customers.id not in
(
select customerid from orders
);
# 先从orders中找出customerid
SELECT c.Name as Customers
FROM Customers as c
left join Orders as o on c.Id=o.CustomerId
where o.Id IS NULL
IF 表达式
IF( expr1 , expr2 , expr3 )
【参考:1873. 计算特殊奖金 - 力扣(LeetCode)】
【参考:MySQL, 7种解法 - 计算特殊奖金 - 力扣(LeetCode)】
SELECT
employee_id,
IF(
employee_id%2=1 and name not like 'M%',
salary,
0
) as bonus
FROM Employees
ORDER by employee_id
UPDATE Salary set sex=IF(sex='f','m','f')
CASE WHEN END
UPDATE salary
SET
sex = CASE sex
WHEN 'm' THEN 'f'
ELSE 'm'
END
自连接
【参考:196. 删除重复的电子邮箱 - 力扣(LeetCode)】
【参考:对「官方」题解中 “delete” 和 “>” 的解释,推荐! - 删除重复的电子邮箱 - 力扣(LeetCode)】
2、p1.Id > p2.Id
继续之前,先简单看一下表的连接过程,这个搞懂了,理解WHERE条件就简单了
a. 从驱动表(左表)取出N条记录;
b. 拿着这N条记录,依次到被驱动表(右表)查找满足WHERE条件的记录;
DELETE p1
FROM Person p1,
Person p2
WHERE
p1.Email = p2.Email AND p1.Id > p2.Id
正则
【参考:1527. 患某种疾病的患者 - 力扣(LeetCode)】
^DIAB1表示以DIAB1开头
|表示或者
.表示一定有任意一个字符
*表示重复0到无穷多个的前一个字符
第一个\表示转义字符
\s是指空白,包括空格、换行、Tab 缩进等所有的空白
所以.*\sDIAB1表示DIAB1前是空格且空格前有0到无穷多个的任意字符
# Write your MySQL query statement below
select patient_id,
patient_name,
conditions
from Patients
where conditions rlike '^DIAB1|.*\\sDIAB1'
函数
upper lower
【参考:1667. 修复表中的名字 - 力扣(LeetCode)】
【参考:【JMao】简单函数解法+分享刷题经验 - 修复表中的名字 - 力扣(LeetCode)】
# Write your MySQL query statement below
SELECT user_id,
CONCAT(Upper(Left(name,1)),Lower(substring(name,2))) as name
from Users
order by user_id
concat
【参考:1484. 按日期分组销售产品 - 力扣(LeetCode)】
【参考:mysql 分组拼接函数 group_concat - 按日期分组销售产品 - 力扣(LeetCode)】
SELECT sell_date,
count(distinct product) as 'num_sold',
# 组内拼接
group_concat(distinct product # 去重
order by product asc # 分组,按照字典序升序
separator ',') # 间隔
as 'products'
from Activities
group by sell_date
order by sell_date
边栏推荐
- JVM常见问题
- Code shoe set - mt3111 · assignment
- 派尔特医疗在港交所招股书二次“失效”,上市计划实质性延迟
- Application of VoIP push in overseas audio and video services
- Code shoe set - mt3435 · assignment - bipartite graph problem - Graphic explanation
- Task04:集合运算-表的加减法和join等--天池龙珠计划SQL训练营学习笔记
- MQ advantages and disadvantages (2022.5.2-5.8)
- Redis beginner to master 01
- Mipi protocol in RFFE
- Vs common shortcut key commands
猜你喜欢
随机推荐
派尔特医疗在港交所招股书二次“失效”,上市计划实质性延迟
Trust configuring domestic sources
VR云展厅如何给线下实体带来活力?有哪些功能?
企业选型作业上常犯的一个错误
Force deduction ----- count the string containing the given prefix
码蹄集 - MT3111· 赋值
Application of VoIP push in overseas audio and video services
[JetsonNano] [教程] [入门系列] [一] 如何开启VNC共享
配置服务器环境
IT外包驻场人员怎么定位自己的痛点?
WordPress 博客使用火山引擎 veImageX 进行静态资源 CDN 加速(免费)
Advanced skills of testers: a guide to the application of unit test reports
项目配置了eslint,编辑器没有关闭eslint功能的情况下,eslint没有生效
MQ component (2022.5.16-5.22)
如何利用 xUnit 框架对测试用例进行维护?
MQ优缺点(2022.5.2-5.8)
Makefile笔记(一文学会Makefile)
Whether the SQL is indexed
Friends in Guangzhou can join us if they have the opportunity
A common mistake in enterprise model selection