求一orcale的sql语句
有个商品表p和分类表c。
其中商品表p结构如下:
pid cid pname
1 1 电脑
分类表c结构如下:
cid cName
1 电子产品
p表的cid外键关联c表的主键cid。现在想查询商品表p的第page页ncount条一页数据,得到数据如下:
pid cid cName pname
1 1 电子产品 电脑
高效的sql语句怎么写?
------解决方案--------------------SELECT pid,cid,pname,cName FROM (
SELECT TEST1.*,TEST2.cName,ROWNUM AS RN FROM TEST1 LEFT JOIN TEST2 ON TEST1.CID = TEST2.CID WHERE ROWNUM <= 第page页 * ncount条) WHERE RN >= (第page页-1)*ncount条 +1
是这个吗
------解决方案--------------------SELECT /*+ FIRST_ROWS */ * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT pid,p.cid,pname,cname FROM p,c where p.cid=c.cid) A
WHERE ROWNUM <= page*ncount
)
WHERE RN > (page-1)*ncount
可以看看这个http://blog.csdn.net/fw0124/article/details/6692022
------解决方案--------------------分页问题,请参考3楼的写法即可
至于查询效率,一般先过滤数据,后分页,速度会比较快些。
------解决方案--------------------SELECT * FROM (
SELECT TEST1.*,TEST2.cName,ROWNUM AS RN FROM TEST1 ,TEST2 WHERE TEST1.CID = TEST2.CID
) WHERE RN BETWEEN 第page页 * ncount条+1 AND 第page页 * ncount条+20
哥来 修改一下