在代码中拼装的SQL,两次查询条件相同,日志中打出来的SQL也完全相同,但是有时候可以查询要预期结果,但有时候就查不到记录。而且,将日志中打出来的SQL(可以查询出结果的)放到Toad中执行,会报00600的错误。有没有帮忙给优化一下,实在是不擅长SQL。
在代码中拼装的SQL,两次查询条件相同,日志中打出来的SQL也完全相同,但是有时候可以查询要预期结果,但有时候就查不到记录。而且,将日志中打出来的SQL(可以查询出结果的)放到Toad中执行,会报00600的错误。有没有帮忙给优化一下,实在是不擅长SQL。
典型的外连接与 group by 的问题;
你的
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
可是union的话需要的字段就不够了吧
不会的,union 不会增加字段的;
不会的,union 不会增加字段的;
我把所有的full join改成left join似乎就可以了,toad至少不报错了
你观察一下数据,看看数据是不是你要的结果;