Как извлечь альтернативные строки из таблицы, в которой есть две строки (Employ_id, salary)? - PullRequest
0 голосов
/ 09 июня 2019

У меня есть таблица с двумя строками (employeeId, salary). Теперь я хочу извлечь из этой таблицы альтернативные строки (четные или нечетные).Как написать код в SQL?

Ответы [ 3 ]

0 голосов
/ 09 июня 2019

ODD ROWS,

выберите * из (выберите empno, ename, sal, rownum rn из emp emp по empno), где mod (rn, 2) <> 0;

EVEN ROWS

select * from (выберите empno, ename, sal, rownum rn из emp emp по empno), где mod (rn, 2) = 0;

0 голосов
/ 09 июня 2019

Таблицы SQL представляют неупорядоченные наборы, поэтому не существует такой вещи, как "четные" и "нечетные" строки. Если бы я интерпретировал вопрос как желающие строки, в которых employeeid является четным или нечетным, я бы использовал:

where mod(employeeid, 2) = 0  -- or 1 or odd

Если бы я интерпретировал это как желаемые строки - упорядоченные по employeeid - были четными или нечетными, то я бы перечислил строки. В самых последних версиях MySQL:

select t.*
from (select t.*,
             row_number() over (order by employeeid) as seqnum
      from t
     ) t
where mod(seqnum, 2) = 0;   -- or 1 for odd
0 голосов
/ 09 июня 2019

Предполагая, что у вас есть столбец, который определяет порядок таблицы, вы можете использовать переменные, чтобы делать то, что вы хотите:

select t.*
from (select t.*, (@rn := @rn + 1) as seqnum
      from table t cross join
           (select @rn := 0) vars
      order by col
     ) t
where mod(seqnum, 2) = 0;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...