Oracle- sql 查询在我们没有数字数据类型列时打印奇数行

Oracle- sql query to print odd number of rows when we do not have number data type columns

我试图从我的 table 中打印奇数行,而没有借助我的数字 cloumns

当我尝试执行此查询时,我只得到第一行。

select * from emp3 where mod(rownum,2)=1;

emp3 是我的 table 名字。 当我使用数字列之一代替 rownum 时,我得到了所需的输出。

select * from emp3 where mod(eid,2)=1 order by eid;

其中 eid 是 table 中的数字列。 但是,如果没有数字列并且我只想打印 table 中的奇数行怎么办? 帮帮我!

如果 EID 列不是数字,则使用数字。比如ROW_NUMBER给出了这样一条信息:

SQL> with temp as
  2    (select empno, ename, job sal,
  3       row_number() over (order by null) rn
  4     from emp
  5    )
  6  select *
  7  from temp
  8  where mod(rn, 2) = 1;

     EMPNO ENAME      SAL               RN
---------- ---------- --------- ----------
      7369 SMITH      CLERK              1
      7521 WARD       SALESMAN           3
      7654 MARTIN     SALESMAN           5
      7782 CLARK      MANAGER            7
      7839 KING       PRESIDENT          9
      7876 ADAMS      CLERK             11
      7902 FORD       ANALYST           13

7 rows selected.

SQL>

甚至 ROWNUM 您已经尝试使用:

SQL> with temp as
  2    (select empno, ename, job sal,
  3       rownum rn
  4     from emp
  5    )
  6  select *
  7  from temp
  8  where mod(rn, 2) = 1;

     EMPNO ENAME      SAL               RN
---------- ---------- --------- ----------
      7369 SMITH      CLERK              1
      7521 WARD       SALESMAN           3
      7654 MARTIN     SALESMAN           5
      7782 CLARK      MANAGER            7
      7839 KING       PRESIDENT          9
      7876 ADAMS      CLERK             11
      7902 FORD       ANALYST           13

7 rows selected.

SQL>

尝试执行以下查询

select * from (select rownum rn ,column from column_name) where mod(rn,2) <> 0 

请参考这个link以更好地理解rownumhttps://www.youtube.com/watch?v=QMyw1jumGyQ

的概念