Oracle - sql запрос на печать нечетного числа строк, когда у нас нет числовых столбцов типа данных - PullRequest
0 голосов
/ 09 марта 2020

Я пытался распечатать нечетные номера строк из моей таблицы, не обращаясь к моей цифре c cloumns

, когда я пытался выполнить этот запрос, я получал только первую строку.

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

emp3 - это имя моей таблицы. и когда я использую один из столбцов цифр c вместо rownum, я получаю желаемый результат.

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

, где eid - это столбец цифр c в таблице. Но что, если нет столбца с цифрой c, и я хочу вывести только нечетное количество строк из таблицы? Помоги мне!

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Попробуйте выполнить приведенный ниже запрос

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

и, пожалуйста, перейдите по этой ссылке для лучшего понимания концепции rownum https://www.youtube.com/watch?v=QMyw1jumGyQ

1 голос
/ 09 марта 2020

Если столбец EID не является цифрой c, используйте что-то, что есть. Например, 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>
...