Leetcode-Mysql题目及知识点总结(197.上升的温度)

计算机小白QAQ,因为想找数分岗暑期实习所以充了会员想集中刷一下leetcode的mysql部分。写这个系列博文和大家们交流一下,后面也会持续更新面经准备的一些问题,欢迎同好们一起交流,求大佬轻喷QAQ。因为自己初学也走了很多弯路,所以会尽量写得详细一点,如果可以帮助到后来的朋友们,请各位留言鼓励一下哈哈哈哈。

197、上升的温度

我比较喜欢刷力扣题因为可以输出结果一点点调整到预期结果,不过牛客网上一次成型不给输出直接提交更像是我们求职时候的场景,说到底还是自己太菜QAQ。

知识点1:笛卡尔积连接方式,之前我们提到左连接右连接和内连接全连接,这里我们介绍一个新的连接方式。同样还是那个例子,如果表1的id是1,2,3,表2的id是2,3,4.在利用笛卡尔积连接时候表1的id会与表2的每一个id组合形成新表的两列,而不管两者是否相等,也就是说在上述例子中就两个表的id共会产生九行,(1,2),(1,3),(1,4)等,所以说笛卡尔积形成的表要比普通连接形成的维度高一些。具体的构造过程是 from 表1,表2即可

知识点2:DATEDIFF(date1,date2) 返回起始时间 date1 和结束时间 date2 之间的天数。date1 和 date2 为日期或 date-and-time 表达式

注意点1:在sql中等于直接用的是单个等号“=”而非python中常用的双等号“==”

注意点2:无论是任何连接方式都需要注意,两个表中有相同的列名,要指明具体是哪一个表的该列,表n.列名。而不能含糊地直接写列名。

思路:因为对于sql来说左右比较要比上下比较来的容易,所以我想先把表看做两个然后左右连接起来,但是因为两个表是完全一样的,如果用之前提到的连接方式相当于相比于之前的表没有多出任何信息,所以我要利用一种新的连接方式称为笛卡尔积将两个表进行连接,同时筛选出两个日期相差一天且后一天温度高于前一天的id进行返回。

代码:

select w1.id from Weather as w1,Weather as w2 where datediff(w1.recordDate,w2.recordDate)=1 and w1.Temperature>w2.Temperature

猜你喜欢

转载自blog.csdn.net/weixin_43167461/article/details/113184080