[英]How to combine two sql queries to get a one table in mysql?
我有一個數據集如下,
Time Number Updated
2/10/2022 10:12 12345 0
2/11/2022 10:12 234 0
2/12/2022 10:12 433 0
2/13/2022 10:12 556 0
2/14/2022 10:12 4357 0
2/15/2022 10:12 12345 1
如果每個數字的更新值為 1,我需要獲取時間、數字和上次更新時間。 output 應該是這樣的。
Time Number Updated Last Updated
2/10/2022 10:12 12345 0 2/15/2022 10:12
2/11/2022 10:12 234 0 2/11/2022 10:12
2/12/2022 10:12 433 0 2/12/2022 10:12
2/13/2022 10:12 556 0 2/13/2022 10:12
2/14/2022 10:12 4357 0 2/14/2022 10:12
2/15/2022 10:12 12345 1 2/15/2022 10:12
我知道我需要獲取以下兩個查詢數據,但我無法將它們組合起來以獲得一個查詢。
select Time,Number from table1;
select Number, max(Time) from table1 group by Number ;
從每個我可以得到 output 如下,
Time Number
2/10/2022 10:12 12345
2/11/2022 10:12 234
2/12/2022 10:12 433
2/13/2022 10:12 556
2/14/2022 10:12 4357
2/15/2022 10:12 12345
Number max(Time)
12345 2/15/2022 10:12
234 2/11/2022 10:12
433 2/12/2022 10:12
556 2/13/2022 10:12
4357 2/14/2022 10:12
12345 2/15/2022 10:12
有人可以告訴我一種有效的方法嗎?因為我有成千上萬的 select 查詢。
更新:
當數據庫發生如下變化時,我如何獲得所需的輸出?
Time Number Updated
2/10/2022 10:12 12345 1
2/11/2022 10:12 234 0
2/12/2022 10:12 433 0
2/13/2022 10:12 556 0
2/14/2022 10:12 4357 0
2/15/2022 10:12 12345 0
結果應如下所示,
Time Number Updated Last Updated
2/10/2022 10:12 12345 1 2/15/2022 10:12
2/11/2022 10:12 234 0 2/11/2022 10:12
2/12/2022 10:12 433 0 2/12/2022 10:12
2/13/2022 10:12 556 0 2/13/2022 10:12
2/14/2022 10:12 4357 0 2/14/2022 10:12
2/15/2022 10:12 12345 0 2/15/2022 10:12
我們可以在這里使用MAX()
作為解析 function:
SELECT
Time,
Number,
MAX(Time) OVER (PARTITION BY Number) AS LastUpdated
FROM yourTable
ORDER BY Time;
上面的邏輯將為每條記錄獲取最大時間值作為最后更新時間。 對於只有一條記錄的號碼,記錄的時間將與最大時間重合。
這是一個應該在早於 8+ 的 MySQL 服務器上工作的版本:
SELECT
t1.Time,
t1.Number,
t2.LastUpdated
FROM yourTable t1
INNER JOIN
(
SELECT Number, MAX(Time) AS LastUpdated
FROM yourTable
GROUP BY Number
) t2
ON t2.Number = t1.Number
ORDER BY
t1.Time;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.