select ename from (select row_number() over (order by ename) rn,ename from emp) * where mod(rn,2)=1;
说是查询跳过表中的偶数行

解决方案 »

  1.   

    select ename from (
                       select row_number() over (order by ename) rn,ename 
                       from emp
                       ) * 
    where mod(rn,2)=1;这么看的话 * 是充当了表的别名,不过一般不会给表的别名起成 * 吧
      

  2.   


    SELECT ename
      FROM (SELECT row_number() over(ORDER BY ename) rn, ename
              FROM emp) *
     WHERE MOD(rn, 2) = 1;
    这个事根据ename排序 生成rownum,然后MOD 根据rownum取余数达到去除偶数行(根据ename排序的偶数行)。
    但是楼主*位置应该是子查询的别名。不然不能执行啊。
      

  3.   

    row_number() over (order by ename)根据ename排序并编号。
    mod(rn,2)=1对编号进行取模处理,1就是奇数,0就是偶数。
    *位置是取别名的位置,你可以取自己想取得名字或者去掉都可以直接执行。。