獲取數據庫中最新時間的數據


https://www.cnblogs.com/Objecting/p/13903607.html

之前寫過一種方法,現在這個方法感覺更好一點

 

需求:取出表里最新時間的一條數據

 

 

現在有一種新的思路,

是用的開窗函數(mysql8.0),先把相同的數據進行分組,並且按照時間倒序,這樣會有一個名次,然后再用名次等於 1 的當做條件

SELECT
    * 
FROM
    (
    SELECT
        t.name,
        t.des,
        t.`value`,
        rank() over ( PARTITION BY t.`name` ORDER BY t.date DESC ) mm 
    FROM
        t_base t 
    ) temp 
WHERE
    temp.mm = 1

還有另一種思路

 

 

 

mysql  5.7 

以上是下面代碼查詢出來的數據,自己調用自己,每次執行到where條件是,都會用到a 表,然后出去找a表的條件

#mysql 5.7
any_value() 這個函數是讓數據庫回歸到mysql5.7不然會報一個分組的錯誤,網上說可以配置數據庫修改這個問題,但實際上是sql不規范的問題

SELECT any_value(a.`name`) code, any_value(a.des) name, any_value(`value`) value FROM t_base AS a WHERE date
=( SELECT max( date ) FROM t_base AS b WHERE a.`name` = b.`name` ) GROUP BY `name`

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM