浏览 3320 次
锁定老帖子 主题:oracle一对多表取其中一条数据
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-23
最后修改:2011-08-25
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 前一种写法效率比较高但是条件得写两遍,如果条件比较多,以后维护起来可能比较麻烦,第二种写法效率灰常低。如果数据量非常大,大家一般都怎么处理? 这个问题很麻烦吗?没有人出来讨论 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |