sql 多組條資料取每組最新的一條資料

2021-09-13 01:31:25 字數 727 閱讀 6286

問:資料庫一張表中有不同公司不同時間發來的資料,怎樣取每個公司最新的那條資料呢?

答:使用分析函式row_number() over (partiion by ... order by ...)來進行分組編號,然後取分組標號值為1的記錄即可。目前主流的資料庫都有支援分析函式。

其中,partition by 是指定按哪些字段進行分組,這些字段值相同的記錄將在一起編號;order by則是指定在同一組中進行編號時是按照怎樣的順序。

以sql server為例:

selects.*

from(

select*, row_number() over (partitionby[公司名]orderby[時間] desc)asgroup_idx

from[表名]

) s

wheres.group_idx = 1

ps:如果只需要找出每組中不同的資料,用distinct就可以實現。

例:select distinct [列名] from [表名]

SQL分組排序後取每組最新一條資料的另一種思路

在hibernate框架和mysql oracle兩種資料庫相容的專案中實現查詢每個id最新更新的一條資料。之前工作中一直用的mybatis oracle資料庫這種,一般寫這類分組排序取每組最新一條資料的sql都是使用row number over 函式來實現 例如 select t1.from s...

mysql 分組查詢每組的最新一條資料

1.原始資料 學生成績表 2.想要獲取每個考生最新的考試成績,網上的例子 select a.from select from scoreinfo order by scoreinfo.createtime desc as a group by a.snum order by a.createtime...

sql中查詢每組的最後一條資料

學號 分數 測試時間 1 70 2011 10 21 20 21 32 1 85 2011 12 10 10 19 02 2 49 2012 02 11 13 32 45 2 60 2011 08 24 09 21 19 3 80 2011 04 20 14 44 10 我希望查出來的結果是 1 8...