日期:2014-05-17  浏览次数:20761 次

求一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

哥来 修改一下