精华内容
下载资源
问答
  • sql,排序后取第一条数据

    千次阅读 2021-01-15 14:34:11
    SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY c.DEVICENO ORDER BY CREATETIME DESC) rn, c.* FROM KMS_CARD_SERVICE c) WHERE rn = 1 ;

    SELECT *
    FROM (SELECT ROW_NUMBER() OVER(PARTITION BY c.DEVICENO ORDER BY CREATETIME DESC) rn,
    c.*
    FROM KMS_CARD_SERVICE c)
    WHERE rn = 1 ;

    展开全文
  • 方法: select * from ( select * from student where 1=1 order by stu_time ) where rownum=1; student所有数据: 查询结果: 方法二: select t.* from ( select s.*,row_number() over(order by ...

    方法一:

    select * from (
    select * from student where 1=1 order by stu_time
    )
    where rownum=1;

    student所有数据:

    查询结果:

    方法二:

    select t.* from (
    select s.*,row_number() over(order by stu_time ) as rwnum from student s where 1=1
    ) t
    where rwnum=1;

    查询结果:

    展开全文
  • oracle和mysql中根据多字段分组后取排序后第一条数据,所取出的数据包括除分组字段外的其它字段。
    现有这样一个场景,一个表中有姓名、性别、年龄、交易时间、产品字段。需求是取出每个人最近购买的一笔产品的信息,即是每个人购买每一种不同产品的最新的一笔数据的信息,而且包含人员其它相关信息。
    --mysql建表
    create table t_trade (
        name varchar(10),
        sex varchar(2),
        age int(10),
        datadate varchar(10),
        product varchar(20)   
    );
    
    --orcle建表
    create table t_trade (
        name varchar(10),
        sex varchar(2),
        age number,
        datadate varchar(10),
        product varchar(20)   
    )
    

    Mysql中可以通过设变量的方式来解决

    select * from (
    	select t1.name, t1.age, t1,datadate, t1.product,
    	if(@pd = t1.name and @pf = t1.product, @rank:=@rank + 1, @rank:=1) as rn, 
    	@pd:= t1.name, @pf:=t1.product from(
    		select name, age, datadate, product from t_trade
    		order by name, product, datadate desc 
    	) t1
    ) t2 where t2.rn = 1;
    

    Oracle中可以通过 over(partition by … order by …)函数进行处理

    select * from (
    	select t1.*, row number() over (partition by name, product order by datadate desc) rn
    	from (select name, age, datadate, products from t_trade) t1
    ) t2 where t2.rn = 1;
    
    展开全文
  • SQL Server 分组排序后取第N数据(或前N) 记录个分组前N数据的SQL: 1 SELECT * 2 FROM ( SELECT ROW_NUMBER() OVER ( PARTITION BY t1.X ORDER BY t1.Y ) AS RNUM , 3 * 4 FROM Table...

    SQL Server 分组排序后取第N条数据(或前N条)

    记录一个分组取前N条数据的SQL:

    1 SELECT  *
    2 FROM    ( SELECT    ROW_NUMBER() OVER ( PARTITION  BY t1.X ORDER BY t1.Y ) AS RNUM ,
    3                     *
    4           FROM      Table1 t1
    5         ) AS T
    6 WHERE   T.RNUM = N

    X:分组的字段;

    Y:排序的字段;

    N:第N条

     

    展开全文
  • SELECT * FROM( SELECT [SPID] ,[PH1] ,[PH1_Code] ,[ProjectName] ,ROW_NUMBER() OVER(PARTIT...
  • 这里插句,MySQL高版本5.7以后,sql_mode有变化,其中之体现为,group by写法。可查看文章了解: 远程centOS6.8final,MySQL5.6; 表结构,数据都是一样; 测试SQL语句: SELECT SwipeID,MemberID,AddTime FROM...
  • SQL分组排序前N记录

    千次阅读 2020-12-09 22:00:58
    MySQL分组排序前N记录MySQL分组排序前N记录场景设定初始数据按要求查询数据关键SQL MySQL分组排序前N记录 SQL写的溜,逻辑少堆,不多说直奔主题。。。 场景设定 统计班级中每个科目考试前3名的...
  • 需求:先按员工编号分组排序,然后给每个分组从1,2...排序分析:需要Row_Number() OVER 语法解决: SELECT emp_no,degree, Row_Number() OVER (partition by emp_no ORDER BY degree desc) rank FROM t_hrm_...
  • mysql group by 函数 分组后排序取第一条数据 select aa.* from 你的操作的表名 as aa right join ( select 分组的那一列列名, max(排序的那一列列名+0) as max from 你的操作的表名 group by 分组的那一列列名 ...
  • 使用SQL Server数据库在【分组排序并取出每组中的第一条数据】的场景下,很容易想到的是使用GROUP BY分组子句配合聚合函数。 举个简单的例子,有一个YANGGBS表,表中有NAME和AGE两个字段,要求统计出每个NAME的最大...
  • 查询出结果将时间排序后取第一条 select * from a where time<="2017-03-29 19:30:36" order by time desc limit 1 扩展:常见数据库 在SQL Server数据库中,使用top关键字: SELECT TOP number|percent ...
  • oracle数据库排序后获取第一条数据

    千次阅读 2020-10-10 10:44:11
    想要获取下列sql的数据的第一条 select NEXT_FOLLOWUP_DATE from PH_CHILD_HEALTH_EXAM where person_info_id = '3afc119ab460497d85f59b1e135ea6b1' order by followup_Visit_Date desc 实现: select NEXT_...
  • 将之前用到的一些sql 记录下来 这次介绍的是row_number() over() partition by 的使用 ...理想的结果:取出的是3记录 和5记录 思路:将数据根据item分区,再在每个分区中进行排序,先根据价格排
  • 如何取SQL结果集的第一条记录

    万次阅读 2018-12-25 16:46:14
    SQL Server数据库中,使用top关键字:  SELECT TOP number|percent column_name(s) FROM table_name  在MySQL数据库中,使用LIMIT关键字:  SELECT column_name(s) FROM table_name LIMIT number  例子:SELECT...
  • select * from ( SELECT name, sex, row_number() over (partition by name ORDER by age DESC) AS num FROM tableA ) a WHERE a.num=1 ```
  • 分组排序取头条记录这种用法在实际项目中极为有效,比如需要将同一个ID的所有记录找出来,按照时间降序取第一条记录(即时间最靠近当前的记录),组成一个表 --先按照UserID分组,然后按照时间排序每组的...
  • 使用ROW_NUMBER() OVER(PARTITION BY COL1 ORDER BY COL2) 先进行分组 注:根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的). sql语句为: select ...
  • Mysql分组的每组第一条数据 gruop by 分组 进行 order by mysql会按照 先分组后排序的形式进行输出 并不能做到每组中的第一条数据取出。 我的思路是 : 先将要查询的数据表转换成已经排序的临时表 在进行 分组...
  • 需求:查询一天中第一条和最后一数据 原始表 select * from table1 ; 步骤1:使用row_number() over() 函数对时间排序,一个正序,一个倒序。 select t.name, t.sex, t.time, row_number() over(order by t....
  • 方法: limit A offset B select distinct Salary as SecondHighestSalary from Employee order by Salary Desc limit 1 offset 1; 由于没有考虑如果没有二个字段怎么办。 改进: select (select distinct ...
  • sql 分组后取第一条

    千次阅读 2014-04-14 15:47:12
    求 :按窗口号分组排序且只显示该窗口最新个记录。 select BH_Hao as QueueNum,ChuangKou as WinId from PD_ReCode a where not exists   (select * from PD_ReCode b where a.ChuangKou=b.ChuangKou and...
  • 排序后名字相同取第一条sql

    千次阅读 2015-01-28 17:22:59
    select top 10 * from( ... where c.SELL_END_DATE>='2014-1-28' and c.ENTR_CURNCY_TYPE=1  ) temp  where rn=1 ORDER BY temp.PRD_MAX_YLD_DE DESC 保存一下,开窗函数比较好使,得多学习一下
  • mysql: SELECT * from (SELECT H_TEMPERATURE,TH_TIME FROM wenshidu WHERE TH_TIME <= STR_TO_DATE('2016-03-16 10:04:52','%Y-%m-%d %H:%i:%s') order by TH_TIME desc) as total limit 0,8;...
  • 1.sql语句分组排序后取出前n记录 (SELECT * FROM ( SELECT "row_number" () OVER ( PARTITION BY mmsi ORDER BY orginal_in_draught DESC ) AS rid, mmsi, orginal_in_...
  • SELECT * FROM (SELECT A.CREATED_DATE, A.MESSAGE, A.JOB_ID, ROW_NUMBER () OVER (PARTITION BY A.JOB_ID ORDER BY A.CREATED_DATE DESC) AS NEW_INDEX FROM CHAT A LEFT JOIN USERS B ON A.USER_ID = B....INDEX = 1
  • select * from ( select F_Id,F_EnCode,F_FullName,F_LotNum,ROW_NUMBER() OVER(PARTITION BY F_EnCode,F_FullName ORDER By F_CreatorTime Desc) AS Row_Sort,F_CreatorTime ...) A where A.Row_Sort=1...
  • sql 排序 ROW_NUMBER() OVER 函数这是我之前写的sql排序函数,现在的需求是mysql 分组,组内排序并且取第一条数据。 mysql用子查询实现类似于row_number()函数的功能 场景: versionId=0时,是默认版本,即该记录...
  • SELECT * FROM (SELECT ROW_NUMBER() OVER (partition BY p.project_code ORDER BY p.id desc) rowId,* from project_flow p ) t WHERE rowId=1
  • sql分组取第一条

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

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 286,609
精华内容 114,643
关键字:

sql排序后取第一条