Diana_0411 2022-04-07 22:47 采纳率: 100%
浏览 19
已结题

LeetCode:197. 上升的温度,这样写为什么不行

题目:编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 id 。

刚开始学,不明白这样写为什么不行,请教

# Write your MySQL query statement below
select W2.id from Weather as w1, Weather as W2 where W2.temperature>W1.temperature and W2.recordDate=W1.recordDate+1;

只通过了13个测试用例,报错的这个测试用例太长了,一时间看不出来是哪里有问题
有看到题解,日期比较是有专门的函数DATEDIFF()
但还是想知道这个为什么不行~

img

  • 写回答

1条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-04-08 00:35
    关注

    mysql里不能直接用加减法来计算日期,如下

    img

    想象一下,4月30号加1天,理论上应该是5月1日,但是sql中如果直接加1,会得出4月31号,而且结果还不是日期类型了。
    因此需要使用date_add或者add_date之类函数来对日期进行加减。
    另外,不清楚你题目mysql的版本,如果是8.0及以后的版本,更好的方式应该是使用开窗函数,这样就只需要对这个表查一次,无需查两次来自关联

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月16日
  • 已采纳回答 4月8日
  • 创建了问题 4月7日

悬赏问题

  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64
  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示
  • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的