昨天发现一个很奇怪的现象,我在分页时的SQL明明是6条,结果确是意想不到的(是9条),我的SQL是这样的
查查了原因,原来是在使用order by的时候出问题了,本人的经验,在使用minus时同时又使用order by进行排序,这时候请加上第二个排序条件,而且这个排序的条件尽量不要重复,以免出现意想不到的结果,最好是主键。
总结:
1.oracle的minus是差集的意思
2.oracle的INTERSECT 是返回两个查询中都出现的记录
3.oracle的UNION 是返回两个查询的记录
select rownum,Page.* from(select id_item,itemname,id_itemclass,id_org from stm_list where id_item not in (select id_item from stm_exppsinfo where id_ptitem='P00002' and grpcode='200901' and IS_FENPEI='Y') and grpcode='200901' and id_ptitem='P00002' order by id_itemclass,id_org)Page where rownum<=66 MINUS select rownum,Page.* from(select id_item,itemname,id_itemclass,id_org from stm_list where id_item not in (select id_item from stm_exppsinfo where id_ptitem='P00002' and grpcode='200901' and IS_FENPEI='Y') and grpcode='200901' and id_ptitem='P00002' order by id_itemclass,id_org)Page where rownum<=60查查了原因,原来是在使用order by的时候出问题了,本人的经验,在使用minus时同时又使用order by进行排序,这时候请加上第二个排序条件,而且这个排序的条件尽量不要重复,以免出现意想不到的结果,最好是主键。
总结:
1.oracle的minus是差集的意思
2.oracle的INTERSECT 是返回两个查询中都出现的记录
3.oracle的UNION 是返回两个查询的记录
本文探讨了一个关于Oracle SQL中使用MINUS操作符时遇到的分页与排序问题。作者发现当使用ORDER BY和MINUS结合时,如果不正确设置排序依据可能会导致意外的结果。通过调整排序字段解决了这一问题。
999

被折叠的 条评论
为什么被折叠?



