假设有t1,t2两张表
我写了这么一条sql:
select(select t1.name,t2.name from t1,t2 where t1.fk_t2 = t2.id order by t2.name)where rownum <=100
查出了12条数据:
1,a
2,a
3,a
4,a
5,a
6,a
7,b
8,b
9,b
10,b
11,b
12,b
但是如果把rownum的数量改为10的话
select(select t1.name,t2.name from t1,t2 where t1.fk_t2 = t2.id order by t2.name)where rownum <=100
查出来的结果是这样的
1,a
2,a
3,a
4,a
5,a
6,a
7,b
8,b
9,b
12,b
导致的结果是我的分页页面中“12,b”这条数据在第1页和第2页都出现了一次但是“10,b”这条数据却没有出现。
当然了,我的解决方法就是多加了一个order字段“order by t2.name,t1.name” 。
但是我还是没弄明白为什么上面两条sql查出的数据顺序不一致了,应该是oracle底层的实现问题把,
不知道大家搞明白我的问题没??
我写了这么一条sql:
select(select t1.name,t2.name from t1,t2 where t1.fk_t2 = t2.id order by t2.name)where rownum <=100
查出了12条数据:
1,a
2,a
3,a
4,a
5,a
6,a
7,b
8,b
9,b
10,b
11,b
12,b
但是如果把rownum的数量改为10的话
select(select t1.name,t2.name from t1,t2 where t1.fk_t2 = t2.id order by t2.name)where rownum <=100
查出来的结果是这样的
1,a
2,a
3,a
4,a
5,a
6,a
7,b
8,b
9,b
12,b
导致的结果是我的分页页面中“12,b”这条数据在第1页和第2页都出现了一次但是“10,b”这条数据却没有出现。
当然了,我的解决方法就是多加了一个order字段“order by t2.name,t1.name” 。
但是我还是没弄明白为什么上面两条sql查出的数据顺序不一致了,应该是oracle底层的实现问题把,
不知道大家搞明白我的问题没??
你分析一下t1,t2表里面分别是什么数据?
select(select t1.name,t2.name from t1,t2 where t1.fk_t2 = t2.id order by t2.name)where rownum <=10
回楼上:第一条sql都搜出来了,共12条
你用t1.name来order by 就可以了嘛.
select(select t1.name,t2.name from t1,t2 where t1.fk_t2 = t2.id order by t1.name)where rownum <=10