当前位置: 代码迷 >> Oracle管理 >> oracle 多表多字段去重+排序,该怎么处理
  详细解决方案

oracle 多表多字段去重+排序,该怎么处理

热度:680   发布时间:2016-04-24 04:10:31.0
oracle 多表多字段去重+排序
实在没办法,求助大家了
本来是hql语句,是正确的
  from PZjlwf zjlwf where 1=1 and zjlwf.dbzId.id in (?,?,?,?) and zjlwf.pcid.id = ? order by zjlwf.dbzId.zbh


但是要加另一个排序条件:
select zjlwf from PZjlwf zjlwf,PPwhzjdfz pwhzjdfz where 1=1 and zjlwf.pcid=pwhzjdfz.pcid  and zjlwf.dbzId.id in (?,?,?,?) and zjlwf.pcid.id = ? order by zjlwf.dbzId.zbh,pwhzjdfz.zjjs


加了以后就狂重复,重复了12次。。。

转换的sql语句为:
select 
            pzjlwf0_.id as id133_,pzjlwf0_.BB as BB133_,
            pzjlwf0_.CJSJ as CJSJ133_,pzjlwf0_.DBTS as DBTS133_,
            pzjlwf0_.DBYFJE as DBYFJE133_,pzjlwf0_.DBZID as DBZID133_,
            pzjlwf0_.LWFKSJE as LWFKSJE133_,pzjlwf0_.LWFSFJE as LWFSFJE133_,
            pzjlwf0_.LWFYFJE as LWFYFJE133_,pzjlwf0_.ND as ND133_,
            pzjlwf0_.PCID as PCID133_,pzjlwf0_.PSTS as PSTS133_,
            pzjlwf0_.PSYFJE as PSYFJE133_,pzjlwf0_.PSZID as PSZID133_,
            pzjlwf0_.PSZFBZ as PSZFBZ133_,pzjlwf0_.PSZFLX as PSZFLX133_,
            pzjlwf0_.SCZTW as SCZTW133_,pzjlwf0_.ZDRS as ZDRS133_,
            pzjlwf0_.ZFBZ as ZFBZ133_,pzjlwf0_.ZFLX as ZFLX133_,
            pzjlwf0_.ZJSBXXID as ZJSBXXID133_,pzjlwf0_.ZT as ZT133_
        from
            PS_ZJLWF pzjlwf0_,
            PS_PWHZJDFZ ppwhzjdfz1_,
            PS_DBZ pdbz2_ 
        where
            pzjlwf0_.DBZID=pdbz2_.id 
            and 1=1 
            and pzjlwf0_.PCID=ppwhzjdfz1_.PCID 
            and (
                pzjlwf0_.DBZID in (963, 964, 965, 966)
            ) 
            and pzjlwf0_.PCID=874 
        order by
            pdbz2_.ZBH,
            ppwhzjdfz1_.ZJJS



用了distinct也是不行,后来参考帖子:
oracle 多表多字段去重问题!

去重了,但是貌似排序不对吧,反正数据库里看

都是0了,之前肯定不是0的。

真心不懂啊,求帮助
1.为什么查询会重复,不是懒加载,我加了也不行
2.为什么最后查出zjjs会都是0

------解决思路----------------------
PZjlwf zjlwf,PPwhzjdfz pwhzjdfz
你这两个表不是一一对应吧,这个表1条,对应另一个表12条?

  相关解决方案