精华内容
下载资源
问答
  • 想要获取上一条或者下一条记录,又不能根据某以字段获取Oracle提供了这样的函数   !--获取上一条记录,若没有记录则值为0,其中' lag (news_id,1,0 ) ' news_id为根据哪一个字段进行检查,'1 '为每次偏移量,'...

    想要获取上一条或者下一条记录,又不能根据某以字段获取,Oracle提供了这样的函数

     

    !--获取上一条记录,若没有记录则值为0,其中' lag (news_id,1,0 )news_id为根据哪一个字段进行检查,'1 '为每次偏移量,' 0 ' 为没有上一条时的返回值;

    select n.*,lag(news_id,1,0) over(order by news_id asc) nid from news n;

    执行结果,最右边多了一行,是每一条记录上一条记录的news_id

    !--具体运用,可以获取下一条记录的news_id

    select nid from
    (
        select n.*,lead(news_id,1,0) over(order by news_id asc) nid from news n
    )a where news_id = 3

     

     

     

    !--获取下一条记录,这里不再追述

    select n.*,lead(news_id,1,0) over(order by news_id asc) nid from news n

     

    !--具体运用,可以获取上一条记录的news_id

    select nid from
    (
        select n.*,lead(news_id,1,0) over(order by news_id asc) nid from news n
    )a where news_id = 3

     

    展开全文
  • 本文给大家收集整理些关于sql获取一条记录的方法,包括sqlserver获取一条记录oracle获取一条记录,mysql获取一条记录,对sql获取一条记录的方法感兴趣的朋友可以参考下本
  • 上一条记录 lag([key1],1,0)over(order by [key2]) select a , times , lag ( a , 1 , 0 ) over ( order by a ) new_a from aa A TIMES NEW_A 1 2019-01-03 0 2 ...

    测试数据

    with aa as
    ( 
    SELECT 1 a,'2019-01-03' times FROM dual union
    SELECT 2 a,'2019-01-02' times FROM dual union
    SELECT 3 a,'2019-01-04' times FROM dual union
    SELECT 4 a,'2019-01-05' times FROM dual union
    SELECT 5 a,'2019-01-06' times FROM dual union
    SELECT 6 a,'2019-01-07' times FROM dual union
    SELECT 7 a,'2019-01-08' times FROM dual union
    SELECT 8 a,'2019-01-09' times FROM dual union
    SELECT 9 a,'2019-01-10' times FROM dual
    )
    

    函数说明

    key1 表示要获得的记录,1为偏移量,0为没有记录时返回的值,key2为排序方式
    (key1与key2 可以一样)

    上一条记录

    lag([key1],1,0)over(order by [key2])

    select a,times,lag(a,1,0)over(order by a ) new_a  from aa
    
    ATIMESNEW_A
    12019-01-030
    22019-01-021
    32019-01-042
    42019-01-053
    52019-01-064
    62019-01-075
    72019-01-086
    82019-01-097
    92019-01-108

    下一条记录

    lead([key1],1,0)over(order by [key2])

    select a,times,lead(a,1,0) over(order by times ) new_a  from aa
    
    ATIMESNEW_A
    22019-01-021
    12019-01-033
    32019-01-044
    42019-01-055
    52019-01-066
    62019-01-077
    72019-01-088
    82019-01-099
    92019-01-100
    展开全文
  • 利用oracle提供的lead、lag  ...求id=ae2e829ecffd4715a5c163f829c2e0f5的上一条记录和下一条记录 上一条记录的sql如下: select * from t_company_apply where  id=(select c.p from (select id,lead(id,1,


    利用oracle提供的lead、lag  函数来查询已有记录的上一条、下一条记录。

    求id=ae2e829ecffd4715a5c163f829c2e0f5的上一条记录和下一条记录




    上一条记录的sql如下:

    select * from t_company_apply where 
    id=(select c.p from (select id,lead(id,1,0)  over (order by apply_date) as p from t_company_apply) c where c.id='ae2e829ecffd4715a5c163f829c2e0f5') 
     查询结果如下图:


    下一条记录的sql如下:

    select * from t_company_apply where 
    id=(select c.p from (select id,lag(id,1,0)  over (order by apply_date) as p from t_company_apply) c where c.id='ae2e829ecffd4715a5c163f829c2e0f5') 
     

    查询结果如下图:

    展开全文
  • 上一条 select *  from cms_article a  where id = (select c.p  from (select t.id, lag(t.id, 1, 0) over(order by t.sort) as p  from cms_article t) c  

    上一条

    select *

      from cms_article a
     where id = (select c.p
                   from (select t.id, lag(t.id, 1, 0) over(order by t.sort) as p
                           from cms_article t) c
                  where c.id = '8a3e56b6396630260139663fa32d01e1');


    下一条


    select a.id,a.title
      from cms_article a
     where id = (select c.p
                   from (select t.id, lead(t.id, 1, 0) over(order by t.sort,t.eidt_date) as p
                           from cms_article t ) c
                  where c.id = '8a3e56b6396630260139663fa32d01e1');
    展开全文
  • 场景:当我们要查询记录,需要对记录分组并且根据排序到第一条数据。 栗子: create table order(--订单表 id number, orderType varchar2(2),--订单类型 orderNo varchar2(20),--订单号 amt number(2,2),-...
  • lead()查询当前行与下行数据主键 select zzid,c.p from ( select d.zzid ,lead(d.zzid,1,0) over (order by d.d01007 ) as p from t_d01 d where exists ( select 1 from ( select zzid from t_d01 d1 start ...
  • 今天突然客户提出一个需求,要查一下APP所有客户的最近一次登录记录,因为数据库使用的是oracle有点懵逼,首先分析了一下需求,按用户id分组,按登录时间降序,然后每个分组的第一条记录就可以搞定了。经过一顿...
  • oracle取最新一条数据

    万次阅读 2019-05-20 17:53:40
    最近在做一个项目,数据库就是用的oracle,正好有个获取最新一条数据的需求。 在网上参考了他人的sql,放在自己这儿就是不行。下边是他们的sql SELECT * FROM ( SELECT *,ROWNUM rn FROM t ORDER BY date_col DESC ...
  • 主要介绍了Oracle结合Mybatis实现表TOP 10数据的相关资料,需要的朋友可以参考下
  • //oracle 上一条记录select decode(decode(txbs,'无',null,txbs),lag(t.txbs, 1, 0) over(order by t.cjid),'是','否')from qb_app_rycj t //下一条记录select t.id, lead(t.id, 1, 0) over(order by t.sort,t.eidt...
  • Oracle 查最后一条记录

    2021-05-13 15:37:30
    2:查出第一条记录。 然后写出: select * from t_qms_bu_check_plan_flow where rownum= 1 order by CREATED_DATE DESC ; 实际是错的。 原因:rownum 在排序之前生效。也就是说执行的顺序是这样的: 1:查出第一...
  • Oracle_获取最新一条记录

    千次阅读 2018-11-15 16:43:22
    1 select rownum ,a.* from t_table a where rownum <100 2 SELECT * FROM ( SELECT *,ROWNUM rn FROM t ORDER BY inputDate DESC ) WHERE rn = 1
  • select a.*,lag(a.id,1) over (order by id desc) lag from 表 alag(要选择的字段,前面一条) over(根据字段排序)lag
  • Oracle两表关联,只B表的第一条记录 前言   A表、B表两表关联,关联出来的结果里B表有不止一条,需求是只要B表结果中的某一条(按某字段排序)。   首先想到了直接写个带排序的子查询去匹配外围的值,从这个结果...
  • ![图片说明](https://img-ask.csdn.net/upload/201912/04/1575432184_434821.png) 这样的查询,我只要一条记录,请问该怎么写呢?
  • 转载自... Oracle 查询出来的数据一条 select * from (select * from order by ) where rownum=1; select * from (select * from order by desc) where ro
  • oracle获取最新的一条记录

    万次阅读 2018-05-06 13:19:16
    SELECT lybh,cfrq FROM ( SELECT lybh,cfrq,row_number() over(partition BY lybh ORDER BY cfrq DESC) rn FROM t_eb_cfjl WHERE cflx='3' ...标题描述的可能有些不清楚,意思就是获取最近的一条记录,比如这个人...
  • oracle针对多数据只最新一条的sql

    千次阅读 2020-10-29 14:36:54
    在针对某个类型数据存在多条时,但只想最新的一条。在可以确定时哪种类型时我们使用简单sql就可以解决。 如: select * from ( select * from t_table a where a.tpye=? order by a.time desc ) where rownum=1;...
  • Oracle重复记录取一条row_number()over(partition by) row_number()over(partition by) select t.*,row_number()over(partition by 字段1 order by 字段2) sort from table_name t partition by是根据某个字段分...
  • lag和lead函数可以在同次查询中取出同一字段的前N行数据(lag)和后N行数据(lead)。这种字段可以使用对相同表的表连接来实现,不过使用lag和lead函数具有更高的效率。 SELECT * FROM (select pid, sp.Psnname, ...
  • select time from table_name t where not exists (select 1 from table_name where id > t.id)
  • 最近项目中的一条sql语句涉及到一个表中相同工单编码中最新的一条数据,在网上看到一函数完美解决此问题,如下是内容要点: 问题:在项目中有一张设备检测信息表DEVICE_INFO_TBL, 每个设备每天都会产生一条检测...
  • oracle中怎么查询各组中最新的一条记录呢?比如说现在有一个表中几条数据如下: 有两种写法: 写法一:over partition by 分析函数 SELECT * FROM (select ID_,COMPANY_NAME,USAGE_RATE,DETECTION_RATE,ACCEPTABILITY...
  • 1.单表查询,多条重复记录取一条 select * from ( select row_number() over(partition by 重复字段 order by 时间字段 倒序还是顺序) a1, a2.字段1,a2.字段2 from 表 a2 where 1=1 查询条件 )where a1 =...
  • 1.使用oracle内置的greatest()和least()函数,具体示例如下: select 5 as col1,6 as col2,9 as col3,1 as col4 from dual; -------------------------------------- col1 | col2 |col3 |col4 5 6 9 1 select g...
  • select * from (select hs.*, row_number() over(partition by hs.ratio_id order by hs.created_date desc) rn from ratio_his hs)) where rn = 1
  • 1.第种方式 select max(t1.INVALID_TIME) from T_CUSTOMER t1 where t1.customer_code = '5101' 1.第二种方式 SELECT INVALID_TIME FROM (SELECT * FROM T_CUSTOMER WHERE customer_code='5101' ORDER BY ...
  • oracle取出每个分组的第一条记录

    千次阅读 2017-07-20 20:23:17
    取出每个分组的第一条记录sql

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 85,788
精华内容 34,315
关键字:

oracle取上一条记录