`
yuxuguang
  • 浏览: 136740 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracal取从表最大值

阅读更多

现在是遇到这种问题,比如两个表主表base与环节表process现在取主表base的记录和环节号最大的记录关联
   base表:
          id,
        content
   process表
          id,
          baseid,
         dealPerson,
         dealTime

现在取process表中dealPerson不为空并且id号为最大的处理记录
有两种方法:
    第一种

select base.content, process.dealPerson
  from base, process
 where base.id = process.baseid
   and process1.dealPerson is not null
   and not exists (select 1
          from process1
         where process1.baseid = process.baseid
         process1.dealPerson is not null
           and process1.id > process.id)

 
第二种:
    
select base.content, process.dealPerson
  from base,
       (select process1.baseid, process1.dealPerson
          from process1
         where process.id in
               (select max(process2.id)
                  from process2
                 where process2.dealPerson is not null)) process
 where base.id = process.baseid




前一种写法效率比较高但是条件得写两遍,如果条件比较多,以后维护起来可能比较麻烦,第二种写法效率灰常低。

 

 

第二种写法会出现的问题:

表base

字段 id,key,data

按key分组取data有最大值的记录

select *
  from base
 where base.data in
       (select max(base.data) from base group by base.key)

这样写看似没有问题,其实如果max(base.data)有与base表的非max(base.data)有相同值得情况会出现重复记录,比如郭key=a的时候data取2为最大,key=b的时候data取3为最大,并且key=b时data有值为2的情况,则会把data=2的这条记录也取出来。当然如果data没有重复记录则不会出现这样的问题

所以:正确的写法

select *
  from base
 where base.data in
       (select max(base1.data) from base base1 where base1.key = base.key group by base1.key)

 

分享到:
评论

相关推荐

    oracle 查询列最大值

    oracle 查询列最大值,例如有n例值,但是要找出这些列中的最大值。

    Oracle考试:plsql求最大值最大值.txt

    plsql求最大值最大值.txt

    oracle 查询最大值 并找出最大值的相关属性

    oracle 查询最大值 并找出最大值的相关属性

    oracle取最大值的三种方式,并且同时获取其它字段数据

    oracle取最大值的三种方式,并且可同时获取其它字段数据 适用于小白、对数据库不熟悉不熟练的人使用 代码有详细的注释,便于理解 纯SQL实现,下载开箱即用

    insert和select结合实现”插入某字段在数据库中的最大值+1″的方法

    本文是mysql 数据库 问题一 将表一的数据导入表二...在表中插入数据时,某一字段取数据库中该字段的最大值,并+1,这个问题很多人都说用存储过程什么的解决,其实使用insert 和 select 结合就可以很好的解决这个问题啊

    Oracle分析函数

    MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算一个组和数据窗口内表达式的平均值。 COUNT :对一组内发生的事情进行累积计数 -----------------------------------------------------------------...

    Oracle左连接返回多条记录中一条记录的查询语句

    Oracle左连接返回多条记录中一条记录的查询语句,更具指定条件分组排序,返回各组中第一条记录

    Oracle练习.txt

    5.如何在ORACLE中取毫秒? select systimestamp from dual; 6.如何在字符串里加回车? 添加一个||chr(10) select 'Welcome to visit'||chr(10)||'www.CSDN.NET' from dual ; 7.怎样修改oracel数据库的默认日期? ...

    oracle优化笔记

    2. SQL2 中的 distinct 取唯一值是为啥,难道表有重复记录? distinct 可是需要排序 的。 3. SQL2 中的 order by t1.col5; 排序是 T1 表的 col5 字段,展现字段又没有这个字 段,真的需要这个排序吗

    SQLServer和Oracle的常用函数对比

    SQLServer和Oracle的常用函数对比 共计45点 1.绝对值 2.取整(大) 3.取整(小) 4.取整(截取) 5.四舍五入 6.e为底的幂 7.取e为底的对数 8.取10为底对数 ...18. 求集合最大值 。。。。。。。

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    8.6.1 例子:使用First_value来计算最大值 206 8.6.2 例子:使用Last_value来计算最小值 207 8.7 其他分析函数 207 8.7.1 Nth_value(11gR2) 207 8.7.2 Rank 209 8.7.3 Dense_rank 210 8.7.4 Row_number 211 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    从就业与择业的角度来讲,计算机相关专业的大学生从事oracle方面的技术是职业发展中的最佳选择。 其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的...

    ORACLE9i_优化设计与系统调整

    第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1...

    Oracle练习笔试大全

    // (函数max() 求出emp表中sal字段的最大值) 46、select min(sal) from emp; // (函数max() 求出emp表中sal字段的最小值) 47、select avg(sal) from emp; //(avg()求平均薪水); 48、select to_char(avg(sal), '...

    Oracle数据库日常维护手册

    4.7. 检查对象的下一扩展与表空间的最大扩展值....................................................... 14 5. 检查 ORACLE 数据库备份结果........................................................................

    用PHP操纵Oracle的LOB类型的数据

    用过Oracle的人都知道,Oracle有一种数据类型叫VARCHAR2,用来表示不定长的字符串。VARCHAR2也是Oracle公司推荐使用的类型。但使用VARCHAR2有个问题:最大只能表示4000个字符,也就相当于2000个汉字。如果你的程序中...

    ORACLE重建索引总结

    4、索引高度:索引高度是指由于数据行的插入操作而产生的索引层数,当表中添加大量数据时,oracle将生成索引的新层次以适应加入的数据行,因此,oracle索引可能有4层,但是这只会出现在索引数中产生大量插入操作的...

    Oracle9i的init.ora参数中文说明

    说明: 确定查询是否获取表级的读取锁, 以防止在包含该查询的事务处理被提交之前更新任何对象读取。这种操作模式提供可重复的读取, 并确保在同一事务处理种对相同数据的两次查询看到的是相同的值。 值范围: TRUE | ...

    收获不知Oracle

    4.2 表的特性从老余一家展开描述 132 4.2.1 老余一家各施所长 132 4.2.2 普通堆表不足之处 132 4.2.2.1 表更新日志开销较大 133 4.2.2.2 delete无法释放空间 136 4.2.2.3 表记录太大检索较慢 139 4.2.2.4 索引回表读...

Global site tag (gtag.js) - Google Analytics