記錄 T SQL 分組排序中取出最新資料

2021-09-06 19:34:28 字數 797 閱讀 8123

原文:

【記錄】t-sql 分組排序中取出最新資料

示例 product 表結構:

示例 product 表資料:

想要的效果是,以 groupname 字段分組,取出分組中通過 sort 降序最新的資料,通過示例資料,可以推算出結果資料的 id 應該為:7、5、3。

示例 sql **:

select * from product p where id=(select top 1 id from product where p.groupname=groupname order by sort desc) order by sort desc
並沒有使用 group by 或 distinct,一行**搞定,但這種方式會造成效能問題。

使用 group by **示例:

select p1.* from product p1 

inner (select max(p2.id) from product p2 group by p2.groupname) p3 on p1.id=p3.id

執行結果:

記錄 T SQL 分組排序中取出最新資料

示例 product 表結構 示例 product 表資料 想要的效果是,以 groupname 字段分組,取出分組中通過 sort 降序最新的資料,通過示例資料,可以推算出結果資料的 id 應該為 7 5 3。示例 sql select from product p where id select...

mysql取出每個分組中最新的記錄

mysql取出每個分組中最新的記錄 mysql的gruop by分組功能沒有排序功能,所以我們如果想取出某個分組下的最新記錄是不太容易的,下面介紹兩種方法,一種是通過子查詢,一種是通過group concat函式來實現。一 表結構及資料插入 表的結構 test3 create table if no...

oracle 分組排序取出最大和最小的記錄

表中字段 phonenumber,score,examtime 要取出時間段中phonenumber的score最大並且examtime最小的記錄,用max和min取的值都不是正確的記錄值,用排序子查詢的方法可以取到 select phonenumber,score,examtime,scoreti...