r是在这一层定义的,要放到外面一层才能在where中使用

解决方案 »

  1.   

    SELECT *
      FROM (SELECT P.*, C.*, ROWNUM R
              FROM (SELECT * FROM TJ_STAR WHERE MANAGER_ID = 0) P, TJ_USER C
             WHERE C.USER_ID = P.USER_ID
               AND ROWNUM < 8)
     WHERE R > 4;
      

  2.   


    select t.* ,rownum r from(
     select p.*,c.*
     from (select * from tj_star where manager_id =0 ) p,tj_user c 
     where c.user_id = p.user_id)  t
     where r>4 and r<8
      

  3.   

    -- 头一行,rownum r 这个报错了,我想,你的本意是要得到一个从1开始的序号,其实,你不妨考虑一下 row_number.这是一个分析函数,你百度一下。
    select p.*,c.* ,rownum r
      

  4.   

    select p.*,c.* ,rownum rp和C两张表的字段定义列出来看一下,应该是有重名的。
    字段定义在dba_tab_columns里头。
    简单点来说是这样。
    select column_name,count(*) from 
    dba_tab_columns t
    where t.table_name in ('name of table p','name of table c')
    group by column_name
    having count(*) >1
      

  5.   

    正如@47522341所说的,两张表user_id字段名一样
      

  6.   

    oracle分页小于号能直接使用,大于号必须嵌套