簡體   English   中英

如何合並兩個 sql 查詢以得到 mysql 中的一張表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM