在代码中拼装的SQL,两次查询条件相同,日志中打出来的SQL也完全相同,但是有时候可以查询要预期结果,但有时候就查不到记录。而且,将日志中打出来的SQL(可以查询出结果的)放到Toad中执行,会报00600的错误。有没有帮忙给优化一下,实在是不擅长SQL。

解决方案 »

  1.   

    和另一个帖子,是一回事儿吗?
    典型的外连接与 group by 的问题;
      

  2.   

    改一种写法吧,大概就是这个语法,
    你的 
    select  *  from 
    (
    select id , max() , min()  from t group by id 
    ) a 
    full join 
    (
    select id , max() , min()  from t group by id 
    ) b
    on a.id = b.id 
    改成
    select id , max() , min() 
    from 
    (
    select id , max() , min()  from t group by id  -- a 
    union all 
    select id , max() , min()  from t group by id  --b 
    )
    group by id 
      

  3.   

    @卖水果的net 
    可是union的话需要的字段就不够了吧
      

  4.   


    不会的,union 不会增加字段的;
      

  5.   


    不会的,union 不会增加字段的;
    我把所有的full join改成left join似乎就可以了,toad至少不报错了
      

  6.   

    我把所有的full join改成left join似乎就可以了,toad至少不报错了
    你观察一下数据,看看数据是不是你要的结果;