clwn.net
当前位置:首页 >> 分组取第一条 >>

分组取第一条

select * from ( select row_number() over(partition by '分组' order by '日期') as rownum -- 排序并分组 , * -- 所需显示的字段 from 表 ) as T where T.rownum = 1 对每组的数据按日期排序并加上行号 取出时只取行号为1,也就是第一条数据。

用row_number函数可以解决。 1、创建测试表及插入数据: create table test(id int,name varchar(10),score int,classname varchar(20));insert into test values (1,'张三',100,'一班');insert into test values (2,'李四',89,'一班');insert i...

不知道你什 么数据库,给出sqlserver和oracle的 select 星期,字母from(select rank() over(partition by 星期 order by 字母 desc) id,*from 表) t1where id=1 或者 select 星期,max(字母)from 表group by 星期

--不知道你需要依据什么分组,如下是根据table1_id进行分组所得结果 select * from (select a.id as a_id,a.name,a.time,a.content,b.id as b_id,b.user from table1 a inner join table2 b on a.id = b.table1_ID) new_tbl where b_id in (sele...

CREATE TABLE test ( channelId int, subChanID INT ); INSERT INTO test SELECT 1, 11 UNION ALL SELECT 1, 12 UNION ALL SELECT 1, 13 UNION ALL SELECT 1, 14 UNION ALL SELECT 1, 15 UNION ALL SELECT 2, 21 UNION ALL SELECT 2, 22 UNION A...

使用分析函数row_number() over (partiion by ... order by ...)来进行分组编号,然后取分组标号值为1的记录即可。目前主流的数据库都有支持分析函数,很好用。 其中,partition by 是指定按哪些字段进行分组,这些字段值相同的记录将在一起编号...

不列出表结构及测试数据,只能这样大概写个思路了: select a.* from ( select t1.*,(select count(*)+1 from 表 where 分组字段=t1.分组字段 and 排序字段

oracle进行分组后,取出每组的前几条数据SELECT *FROM (SELECT 分组的字段名,ROW_NUMBER() OVER(PARTITION BY 分组的字段名 ORDER BY 排序的字段名) AS RNFROM 表名)WHERE RN

那要看什么数据库了.比如mysql有limit关键字 比如有user表 字段:id,age 现在按age排列,然后取出第一条数据 你可以:select * from user order by age asc limit 0,1 sqlserver有个top关键字 oracle有内置函数神马的~

select max(年龄字段) from 表名 group by City;

网站首页 | 网站地图
All rights reserved Powered by www.clwn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com