SQL查询以逐块获取最新数据

Posted

技术标签:

【中文标题】SQL查询以逐块获取最新数据【英文标题】:SQL query to get latest data blockwise 【发布时间】:2014-09-17 02:36:17 【问题描述】:

我想根据日期获取每个 Block(row) 的最新数据。但如果今天的日期数据不可用,那么之前的日期。我从以下链接的 *** 中得到了一个答案。但查询在 mysql 我需要在 MSSQL 中进行类似的查询。就我而言,今天可用的块数据很少,但其他块不可用。所以我需要所有块的数据,我需要从以前的日期获取块数据不可用的所有块。

retrieve the last inserted row from each user in database

SELECT *
FROM (
    SELECT
        Users.*,
        CASE WHEN @lst=User THEN @row:=@row+1 ELSE @row:=0 END row,
        @lst:=User
    FROM
        Users
    WHERE
        User IN ('ina','chris','john')
    ORDER BY
        User, Date_ins DESC
) s
WHERE
    row=0

提前致谢。

【问题讨论】:

【参考方案1】:

SQL Server 等效项将使用 row_number():

select u.*
from (select u.*, row_number() over (partition by user order by date_ins desc) as seqnum
      from users u
      where u.User IN ('ina','chris','john')
     ) u
where seqnum = 1;

【讨论】:

以上是关于SQL查询以逐块获取最新数据的主要内容,如果未能解决你的问题,请参考以下文章

SQL查询获取特定日期和列中最新日期之间的数据

sql中获取到两条数据,怎么获取最新的

一个事务中多条查询sql是取最新数据吗

SQL 查询以获取该用户的最新记录

复杂的 SQL 连接查询 - 获取最新行

使用 SQL 查询(MySQL 数据库)获取不同项目的最新“事件”