Leetcode Database using MySQL from the EASY ones 准备数据分析面试SQL试题

本文解析了LeetCode上的两道SQL题目,包括175题的LEFT OUTER JOIN应用和176题的求第二高薪资的方法。重点强调了LEFT OUTER JOIN的使用场景和注意事项,如避免在ON后跟逗号,以及WHERE子句的限制。另外,对于第二高薪资的查询,提到了DISTINCT关键字确保唯一性,LIMIT用于获取特定数量的记录,以及IFNULL函数处理缺失值的情况。文中还提及了自连接(self join)的解题思路。
摘要由CSDN通过智能技术生成


#175 Combine Two Tables   

考察原理:LEFT OUTER JOIN外联结

易错点:

1、 t1 后面不要带逗号!!!!!

FROM t1
LEFT OUTER JOIN t2

2、联结包含了两个表,a表是长一点的,b点里面只有a表的某些id里面的具体信息。这时候要联结两个表就要用outer join,而且不可以用where语句,where语句只会呈现同时出现在两个表里的那些记录。同理,“from on t1.a=t2.a”也是不可能跑出正确答案的。

常见句式: “计算/列出 XXX , 包括哪些没有/尚未……的。”




#176 Second Highest Salary   

标准答案中要注意的点或提示:

1、Distinct的使用:万一有两个同样高的值呢,答案只要一个

2、用子查询的效率会低一些

3、LIMIT: 常用的考题应该是,“只查询前几行”、“只查询前五名/前十条”,这一题只选择第二高的工资,万一想查询第二到第五高的工资呢?妈呀我举一反三的能力真强:

mysql> SELECT * FROM ratings ORDER BY category, id LIMIT 5;
这里取的是ratings前五名的全部记录。LIMIT 在ORDER BY的后面。

limit后面带一个数的时候是上者,带两个数的时候是下者,注意第一个数有不一样的含义。

SELECT * FROM tbl LIMIT 5,10;  # 返回 rows 6-15

第一个数字,是开始的行数,第二个数是最多返回的条数(最小的数字是0而不是1)

4、IFNULL: IF家族一个成员,

IFNULL(expr1,expr2) If expr1 is not NULLIFNULL() returns expr1; otherwise it returns expr2.

这个解法就会覆盖了如果没有这个值的时候显示的是啥的问题。

181

第一眼,一个表里的某些信息又是某个表里的某些信息,自然就是自结合,self join啦。原理是对同一个表格命名成两个不一样的表格,但是用的数据都一样。

两种语法,join & where

见到比较优秀的答案,where exists 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值