三张表联查的结果分页显示的sql语句怎么写?
create table users
(
  userid number not null primary key,
  username  varchar2(20)  not  null unique,
  userpwd  varchar2(60)  not null
)create table diary_group
(
  dgerid number not null primary key,
  dgname  varchar2(20)  not  null ,
  userid  varchar2(20)  --外键引用user表的主键
)create table diary
(
  diaryid   number  not null primary key,
  diarytitle  varchar2(20)  not  null unique,
   diary    clob  not  null,
  dgid  number       --外键引用diary_group表的主键
)
根据用户的userid查出用户的所有日志,然后结果分页显示的sql语句应该怎么写?

解决方案 »

  1.   

    SELECT *
    FROM
      (SELECT A. * ,
        ROWNUM RN
      FROM
        (
        ...
        --这里面写三张表联立SQL
        ...
        ) A
      WHERE ROWNUM <= 10
      ORDER BY 排序字段 DESC
      )
    WHERE RN > 0 
      

  2.   

    2楼的改改:SELECT *
    FROM
    (SELECT A. * ,
    ROWNUM RN
    FROM
    (
    ...
    --这里面写三张表联立SQL
    ...
    ) A
    ORDER BY 排序字段 DESC
    )
    WHERE RN > 0 and RN < 11
    WHERE RN > 0 and RN < 11 这句
    其中RN可以根据你的分页情况变化
    如果是第2页
    则这句改为
    WHERE RN > 10 and RN < 21如果知道第几页和每页数量
    则可以改为
    WHERE RN > num * (page-1) and RN < num * page + 1
    其中num是每页数量,page是第几页