LeetCode MySQL日期比較函式

2022-07-07 10:30:19 字數 1584 閱讀 4722

leetcode題目

表 weather

+---------------+---------+

| column name | type |

+---------------+---------+

| id | int |

| recorddate | date |

| temperature | int |

+---------------+---------+

id 是這個表的主鍵

該錶包含特定日期的溫度資訊

編寫乙個 sql 查詢,來查詢與之前(昨天的)日期相比溫度更高的所有日期的 id 。

返回結果 不要求順序 。

查詢結果格式如下例:

weather

+----+------------+-------------+

| id | recorddate | temperature |

+----+------------+-------------+

| 1 | 2015-01-01 | 10 |

| 2 | 2015-01-02 | 25 |

| 3 | 2015-01-03 | 20 |

| 4 | 2015-01-04 | 30 |

+----+------------+-------------+

result table:

+----+

| id |

+----+

| 2 |

| 4 |

+----+

2015-01-02 的溫度比前一天高(10 -> 25)

2015-01-04 的溫度比前一天高(20 -> 30)

解答該題要求比較日期資料的差值。

1, 思路一: 錯誤思路, 直接對日期加一。 日期的月份和日是迴圈變化的,單純的加一無法做到迴圈。

select distinct a.id

from weather a, weather b

where a.recorddate = b.recorddate+1

and a.temperature > b.temperature;

思路二:datediff(a, b)日期函式,該函式返回a-b的天數差值。

select  a.id

from weather a join weather b

on datediff(a.recorddate, b.recorddate) = 1

and a.temperature > b.temperature;

思路三: date_add()函式,對b日期加一天後再與a日期比較是否相等。優點是符合mysql高效查詢的原則(令等式左邊不出現算式,更好的利用索引)。

a.recorddate = date_add(b.recorddate, interval 1 day)

leetcode mysql 刪除重複的電子郵箱

1 題目 編寫乙個 sql 查詢,來刪除 person 表中所有重複的電子郵箱,重複的郵箱裡只保留 id 最小 的那個。id email 1 john example.com 2 bob example.com 3 john example.com id 是這個表的主鍵。例如,在執行你的查詢語句之後...

leetcode mysql 從不訂購的客戶

1 題目 某 包含兩個表,customers 表和 orders 表。編寫乙個 sql 查詢,找出所有從不訂購任何東西的客戶。customers 表 id name 1 joe 2 henry 3 sam 4 max orders 表 id customerid 1 3 2 1 例如給定上述 你的查...

627 交換工資 Leetcode Mysql

給定乙個 salary 表,如下所示,有 m 男性 和 f 女性 的值。交換所有的 f 和 m 值 例如,將所有 f 值更改為 m,反之亦然 要求只使用乙個更新 update 語句,並且沒有中間的臨時表。注意,您必只能寫乙個 update 語句,請不要編寫任何 select 語句。例如 id nam...