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 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计