SELECT main.*,space.* FROM tb_show main LEFT JOIN tb_space space ON space.userid=main.userid ORDER BY main.credit DESC LIMIT 0,100
这样就根据credit排序后取出了100条数据,先排序再取
移植到Oracle中后我是这样写的:
SELECT * FROM (SELECT main.*,space.* FROM tb_show main LEFT JOIN tb_space space ON space.userid=main.userid ORDER BY main.credit DESC) WHERE ROWNUM BETWEEN 1 AND 100
由于两个表中有相同的字段所以报错说SELECT * 这个*这里有问题,说未明确指定列,很多人说解决的办法就是里层查询中把明确查询的列写出来,这样是不是太麻烦了,我一张表有40多个列,而且又不知道后面那些列要用,哪些列不用,我想问一下,Oracle中就没有解决这样问题的办法吗?
7 个解决方案
#1
没有了!
请高人指点!
请高人指点!
#2
应该是由于 你两张表里有同名字段造成的。
#3
你可以用oracle的分析函数.row_number() over 然后再外进行一层子查询应该就好了.
#4
应该是,没办法。必须指定
#5
换一个思路怎么样?先排序,然后再left join怎么样呢?考虑过这个方法没有呢?
不知道写的对不对,没有测试数据的说。
SELECT * from (SELECT * FROM tb_show a order by a.credir DESC ) main LEFT JOIN tb_space b on a.userid=b.userid and ROWNUM<101
不知道写的对不对,没有测试数据的说。
#6
在oracle8以前的版本怎么实现排序后再分页,请教一下!
#7
的确没有了,还是把列全写出来了
#1
没有了!
请高人指点!
请高人指点!
#2
应该是由于 你两张表里有同名字段造成的。
#3
你可以用oracle的分析函数.row_number() over 然后再外进行一层子查询应该就好了.
#4
应该是,没办法。必须指定
#5
换一个思路怎么样?先排序,然后再left join怎么样呢?考虑过这个方法没有呢?
不知道写的对不对,没有测试数据的说。
SELECT * from (SELECT * FROM tb_show a order by a.credir DESC ) main LEFT JOIN tb_space b on a.userid=b.userid and ROWNUM<101
不知道写的对不对,没有测试数据的说。
#6
在oracle8以前的版本怎么实现排序后再分页,请教一下!
#7
的确没有了,还是把列全写出来了