oracle根据查询条件、时间降序排序查询出最新的一条数据并更新

update TBL_SQZL
set HYJG = 1
where ID = (
select ID
from (
select ID
from TBL_SQZL
where JYTGM is not null
and XM = '郭玉珍'
and ZJHM = '310101194307254025'
and ZJLX = '01'
order by CRT_TIMESTAMP desc)
where ROWNUM = 1
);

select准确查出一条数据,整体执行的时候就一直转圈圈……表数据有两万四千多条,是需要优化还是怎么滴?

0

3个回答

又是靠自己。。
通过Oracle的开窗函数over(partition by):

update TBL_SQZL
set HYJG = '1'
where ID = (
  select t2.ID
  from (select t.*,
               row_number() over (
                 PARTITION BY t.ZJHM
                 ORDER BY
                   t.CRT_TIMESTAMP DESC
                 ) as row_flg
        from TBL_SQZL t) t2
  where t2.JYTGM is not null
    and t2.XM = '郭玉珍'
    and t2.ZJHM = '310101194307254025'
    and t2.ZJLX = '01'
    and t2.row_flg = '1');
0

你子查询里都没有加top 1

0
qq997404392
伪墨 Oracle不支持 select top
3 个月之前 回复
update TBL_SQZL
set HYJG = 1
where JYTGM is not null
and XM = '郭玉珍'
and ZJHM = '310101194307254025'
and ZJLX = '01'
and CRT_TIMESTAMP >=(select max(b.CRT_TIMESTAMP) from TBL_SQZL b)
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MySQL 更新符合查询条件的第一条记录、更新根据创建时间降序排列的第一条记录
update table_name set col_1=xxx where col_2=yyy limit 1 更新符合指定条件的第一条记录 UPDATE table_name set col_1=1112 WHERE id=(select temp.id from (select id from table_name WHERE col_2=xxx order by create_tim...
oracle按时间排序,取得表中第一条数据(数据可能重复)
 --查询申报时间最靠前的运单对应的,毛重,件数,运输号,运单号,申报时间 --其中运单号可批次号都有可能会重复 select t.cargo_wt, t.pack_num, t.tran_no, t.bill_no, t.declare_time   from (select b.cargo_wt,                b.pack_num,                m.tran...
按照日期降序排序,取前五条数据
select *             from (select t1.hr_no,                          t1.hr_date,                          (row_number() over(order by t1.hr_date desc)) mm                     from T_HR t1) t2    
SQL语句:按时间查询最新的一条数据
select * from( select * from lz_global_result t order by t.time desc ) a where rownum 高效率的哦。呵呵
oracle 查询 某字段重复按照创建时间倒序取第一条
select *   from (select dawt.*,                row_number() over(partition by dawt.atlasid order by dawt.create_date desc) rn           from DES_ATLAS_WORKFLOW_T dawt) c  where rn = 1; 其中 atlasid
oracle 去重并按时间排序取第一条
select  t.*      from (select a.*, row_number() over(partition by 需要分组的字段 order by 更新时间 desc) rw              from 表 a) t     where t.rw = 1   row_number()over(partition by col1 order by col
查询数据库 取出List集合里面的一条数据(排序根据id取出最新的一条)
-
Oracle:重复数据去重,只取其中一条(最新时间/其他字段排序规则)数据
一、问题: //一个会话id代表一个聊天室, 返回该聊天室最新的一条数据显示在会话列表, 二、解决思路: 使用row_number() over 分组排序功能 来解决该问题; * 1、语法格式:row_number() over(partition by 分组列 order by 排序列 desc); 2、row_number() OVER (PARTITION BY COL1 ORDER BY ...
sql 分组后按时间降序排列再取出每组的第一条记录
竞价记录表: Aid 为竞拍车辆ID,uid为参与竞价人员ID,BidTime为参与竞拍时间 查询出表中某人参与的所有车辆的最新的一条的竞价记录 思路:通过aid分组,通过时间做降序排列,给每组数据加上行号(rowId)然后取出行号为1的数据,就是所要查询的数据 源数据: select * from auto_AuctionRecords 执行查询
如何在Oracle中查询排序后的第一条记录
其实就是分页查询的另一种应用:select * from (select tb.*, rownum from table_name tb where column_name like 20080311% order by id)where rownum=1
Oracle 根据时间 查询最新一条记录
模板 select * from (select A from TABLE order by TIME desc) where rownum = 1 例子 表结构 查询最新的一条FROM_ID记录 select * from (select form_id from formid where user_id = '28be9d85d0764c518ca074832fbad1b6...
sql分组并提取每组的前一条,按照时间排序
select * from ( select row_number() over(partition by '分组' order by '日期') as rownum -- 排序并分组 , * -- 所需显示的字段 from 表 ) as T where T.rownum = 1 对每组的数...
Oracle关于如何获取分组排序后的第一条数据
平时遇到最多的sum(),max()等等,使用group by聚合函数即可轻松解决,但是有时候我们的需求:按类别分组,按时间排序,然后获取每个分组中最新的一条。这种需求。SQL1> select t1.*,t2.nums from log_update_cycle t1,(select b.cycle_id,count(*) nums,max(update_date) update_date...
Oracle给结果排序后添加序号和返回某条记录的序号
    首先在oracle里面的序号一般使用rownumselect rownum,t.* from T_USER_BASICINFO t    但需要用其中某个字段排序的情况,rownum就不能按顺序排序了。这里用u_level字段排序select rownum,t.* from T_USER_BASICINFO t order by t.u_level    解决办法:第一种:select ...
oracle中排序后查询前几条数据
SQL   SERVER中可以用top关键字查询符合条件的前几条记录。(select   top   10   ......)ORACLE中没有top关键字,应该怎么查询呢?方法如下:1、sql语句:SELECT   *   FROM   (SELECT   *    FROM    TABLE_A   TA  ORDER  BY  TA.ID)  WHERE   ROWNUM<10;2、注...
mongoDB查询某个字段按时间排序和单个字段查询的集合
1.mongoDB查询包含某个字段并按时间排序的集合db.getCollection('表名').find({字段名{$exists:true}}).sort({时间:-1})其中1为升序,-1为降序。2.mongoDB查询只包含某个字段的集合db.getCollection('表名').find({"字段名" : "字段值"},{"字段名":1,"字段名":0})启动1显示该字段,0不显示该字段...
数据 140g, 按照字段time 降序排列 选出最大的前50个
数据 140g, 按照字段time 降序排列 选出最大的前50个。 使用 一般方法 select * from table order by time desc limit 50.  执行了1小时6分钟完全算出。 任务数1个  map数  1783 reduce 1 而 select * from (select * from table distribute by time sort ...
oracle 去重复数据(取最新时间数据)(每种类型取前10条)
     select t.* from (         select a.*, row_number() over(partition by 需要分组的字段 order by 时间字段 desc) rw         from 表 a         where 条件         ) t where t.rw = 1 每种类型的数据取前十条 ...
Oracle 子查询,按降序排列,取前n条
比如,有一个student 表:   id             student_name      1                                  s1 2                                  s2 03                                s3 04
oracle 当查询结果有重复记录时 选择时间最近的一条
select   dd.receive_person,        dd.borrow_date,        dd.return_date,        dd.check_status,        da.reason,        dd.pk,        rb.resource_name,        rb.resource_brand,        da.
oracle排序后获取第一条数据
首先想说下,其实很简单的 select * from (select * from testStudent order by id desc) where rownum=1; 看上面d
SQL oracle 用rownum方法查询最近更新的n条数据
查询最近2小时跟新的记录 Select * From book Where update_time > sysdate-2/24 sysdate+(5/24/60/60) 在系统时间基础上延迟5秒 sysdate-(5/24/60/60) 在系统时间基础上减去5秒 sysdate+5/24/60 在系统时间基础上延迟5分钟 sysdate-5/24/60 在系统时间基础上
ORACLE取时间最近的一条数据
在数据变更记录表取所有数据的最新一条记录,resid为数据的id,applyid为数据每次变更的单号,A为数据变更记录表 示例代码如下: select lo2.applyid from A lo2 where not exists (select 1 from A lo where lo.resid=lo2.resid and lo2.optime<lo.optime)     ...
mysql5.7分组查询group by,分组查询并且显示每组时间最新的一条记录
SELECT ** FROM t_group_album a LEFT JOIN ( SELECT f_aid, COUNT(f_aid) pictureNum, group_concat( f_image_url ORDER BY f_update_time DESC ) f_image_url FROM t_group_picture GROUP BY f_ai
oracle 去重复数据(取最新时间数据)
   select t.* from (         select a.*, row_number() over(partition by 需要分组的字段 order by 时间字段 desc) rw         from 表 a         where 条件         ) t where t.rw = 1...
带条件查询离当前时间最近的一条记录
写项目时遇到从数据库中查询离当前时间最近的一条记录,然后上网查了一下,SELECT * FROM locationinfo WHERE DATETIME=(SELECT MAX(DATETIME) FROM  locationinfo); 然后,要根据用户的userid来查询, 之前脑子混了,写的是SELECT * FROM locationinfo WHERE userid=1 and D
关于查询表中时间最新的一条记录
最近遇到一个sql,要求表中时间最新的一条记录假设表名为 test ,时间字段为sj,姓名为xm,可以用以下语句:select * from test a where a.sj=(select max(b.sj) from test b where b.xm=a.xm)之前一直不理解这个查询的处理流程,猜测是这样:1.从a从取一条数据x2.根据x.xm对b表分组,求b.xm为某个值时,b.sj的最...
DB2 查询数据,并且统计某一条数据重复出现的次数,并且按照时间顺序取最大的记录
分享一个sql查询 首先:介绍一下表结构 CREATE TABLE ZYRS_METADATA.T_EXTRACTOR_MESSAGE ( ID VARCHAR ( 32 ) NOT NULL PRIMARY KEY, --uuid TASK_INSTANCE_ID VARCHAR ( 32 ), -- 任务ID LAST_UPDATE_TIME BIG...
Litepal查询数据并按两个类别排序
最近看郭霖老师的《第一行代码第二版》讲到Litepal,通过 DataSupport.order("x asc").find(Aps.class);将aps表中的数据可以按x的升序排序,但是我做的小东西确要把数据库中的所有数据读出来,并且按坐标的x,y排序。在网上看了http://blog.csdn.net/lianghe_work/article/details/45039977的文章,说到s
查询数据库时 采用 分组查询并 获取分组后组中最新的一条数据
使用原生可采用: SELECT * FROM lease_note ln WHERE ln.delete_time IS NULL AND ln.id = ( SELECT lns.id FROM lease_note lns WHERE lns.contract_id = ln.contract_id ORDER BY create_time DESC...
iOS sqlite语句,根据指定条件查找并降序排列
@"SELECT * FROM resultT WHERE resultID = ? ORDER BY number DESC" resultT:表名 resultID:查找条件 number:排序条件 DESC:默认为升序,加上这个DESC,为降序排列
oracle查询题目,1按照birth排序 2取前20条数据 3person_no为009的记录,排在第一位
有一个表:personid    name    birth              person_noXX   James   1987/01/01    001YY   Tom     1981/12/23    009··· ···1按照birth排序2取前20条数据3person_no为009的记录,排在第一位...
GROUP BY 条件查询最新时间记录
概述:最近项目一个查询需求是从一个表中同一个IP多条记录的只获取一条IP记录,而这条IP记录要最新的。很明显需求没什么难,分组当然想到的是group by,但是这里是有个时间条件筛选的。虽然网上很多答案,但是我发现实际操作上是没有生效的,不知道是MYSQL版本问题还是答主们只是理论而没有实际尝试过,这里分享一下我的处理方式。 准备:1、首先看我准备了同一个IP两条数据,时间不一样的。 2、
oracle中根据时间获取最新的一条数据
select kd.CREATEUSERID as userid,kd.LOCATION,kd.createtime as location from KT_DEVICESTRACK kd where rownum=1 order by kd.createtime思路:根据创建的系统时间排序,然后取第一条数据即可
sql语句面试题(查询按照申请日期倒序排列的前10个记录)
sql函数:case when then else end 、row_number() 、with as、having count 函数运用
mysql获取按日期排序获取时间最近的记录
        mysql获取按日期排序获取最新的记录    1. 显示表中全部记录                2. 获取最新时间记录     利用GROUP BY原理: select * from ( select * from gf_mobile_note order by create_time desc ) tem group by mobile order b...
access 查询符合条件的第一条记录
有个定时上传数据库中某些记录的需求。定时任务中,如果查出所有符合条件的数据并上传,如果数据过多,可能不易处理,那么就限定每次只查询符合条件的一条或几条记录。经测试,access中SQL写法举例如下:select top 1 * from check_result where lineflg = '未上传' ...
Linq 先进行分组,在进行排序(选取某一个人的最新的一条记录)
 var asd = from a in context.v_ydyl_execdrug                               group  new { a.drug_name,a.INPATIENT_NO, a.USE_TIME }  by a.INPATIENT_NO into g                               orderby g.
TP 查询某一条件字段 并 排序
例: SELECT `content` FROM `app_sms_statistics` WHERE ( mobile= '15300330047' ) ORDER BY time DESC LIMIT 1 $sms_statistics = M('sms_statistics'); $sms_statis = $sms_statistics->order('time D
oracle 分组查询取第一条数据 关联查询 最后一条数据
select t.name1,t.name2,t.zx from (select row_number()over(partition by name1 order by zx desc)rn, test.* from test)t where t.rn=1;
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 ios最新开发教程 nlp最新课程