论坛首页 综合技术论坛

oracle一对多表取其中一条数据

浏览 3320 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-08-23   最后修改:2011-08-25
   现在是遇到这种问题,比如两个表主表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




前一种写法效率比较高但是条件得写两遍,如果条件比较多,以后维护起来可能比较麻烦,第二种写法效率灰常低。如果数据量非常大,大家一般都怎么处理?

这个问题很麻烦吗?没有人出来讨论
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics