sql 相同列获取最新一条数据

一、SqlServer

  1. 数据样图
  2. sql 语句
     SELECT * FROM [WeChatApp].[dbo].[Templates] WHERE ID IN
     (
       SELECT _hour.ID FROM 
       (
          SELECT *,ROW_NUMBER()OVER( partition by Name ORDER BY Type DESC) Rank FROM [WeChatApp].[dbo].[Templates]
       )AS _hour WHERE Rank=1
     ) 
    
  3. 查询结果

二、Mysql

  1. 版本支持 mysql8.0+
  2. sql 语句
    -- 查询第一排名数据
    SELECT * FROM 
    (
       -- `Type` 列以时间升序排名
       SELECT 
          Id,Name,Type,CreateTime
          ROW_NUMBER() OVER (PARTITION BY Type ORDER BY CreateTime ASC) AS `Rank`
       FROM 
          `WeChatApp`.Templates
    ) AS Tmp WHERE Tmp.`Rank`=1
    
  3. 联表查询
    -- 联表查询排名第一数据
    SELECT * FROM `WeChatApp`.Content AS Content
    INNER JOIN 
    (
       -- `Type` 列以时间升序排名
       SELECT 
          Id,Name,Type,CreateTime
          ROW_NUMBER() OVER (PARTITION BY Type ORDER BY CreateTime ASC) AS `Rank`
       FROM 
          `WeChatApp`.Templates
    ) AS Tmp 
    ON Content.TempId=Tmp.Id
    WHERE Tmp.`Rank`=1
    
posted @ 2020-06-03 09:19  1764564459  阅读(883)  评论(0)    收藏  举报