我得SQL语句:  select * from person_info join person_post on person_info.p_userid = person_post.p_userid join person_res on person_info.p_info_id =person_res.p_info_id where person_post.p_post_hy = '计算机软件' and p_res_gxtime >to_date('2010-9-17','yyyy-mm-dd hh24:mi:ss')得到了N条记录...而,现在我只想要这N条记录当中的随即 3条..该怎么写?

解决方案 »

  1.   


    select *
    from (select * from person_info join person_post on person_info.p_userid = person_post.p_userid join person_res on person_info.p_info_id =person_res.p_info_id where person_post.p_post_hy = '计算机软件' and p_res_gxtime >to_date('2010-9-17','yyyy-mm-dd hh24:mi:ss')
    order by dbms_random.value) where rownum<4
      

  2.   


    select *
      from (select *, rownum rn
              from person_info
              join person_post on person_info.p_userid = person_post.p_userid
              join person_res on person_info.p_info_id = person_res.p_info_id
             where person_post.p_post_hy = '计算机软件'
               and p_res_gxtime > to_date('2010-9-17', 'yyyy-mm-dd hh24:mi:ss')
             order by dbms_random.value)
     where rn < 4