ORACLE在使用distinct可能因为查询的列过少导致数据丢失的问题

select distinct t1.PRO_NUM  PRO_NUM,
          t1.PRO_NAME PRO_NAME,
           --sum(t2.work_time),
           t2.work_time,
           t2.pro_seq PRO_SEQ
                  from WM_PROJECT_TASK t,
                       CPM_PROJECT_MSG t1,
                       WM_TIME_DETAIL  t2,
                       Wm_Time_Info    t3
                 where t.pro_seq = t1.SEQ
                   and t1.SEQ = t2.pro_seq
                   and t2.time_id = t3.id
                   and t3.check_result = 1
                   and t2.product_seq = '1158'
                    and t2.pro_seq is not null
                  -- group by PRO_NUM,PRO_NAME,t2.PRO_SEQ

此时 就查出4个参数 这样如果4个参数查询出来的列是一样的 distinct会将一列删除掉

   select distinct            
                                t1.PRO_NUM PRO_NUM,
                                t1.PRO_NAME PRO_NAME,
                                t.work_time,
                                t.pro_seq PRO_SEQ,
                                t.*
     from WM_TIME_DETAIL t ,CPM_PROJECT_MSG t1,Wm_Time_Info t2 
     where 
     t1.SEQ = t.pro_seq 
     and t2.id = t.time_id 
     and t.product_seq = '1195' 
     and t.pro_seq is not null
      and t2.check_result = 1

加上主表的t.*就可以防止这个问题发生

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值