Как показать только четные или нечетные строки в SQL Server 2008? - PullRequest
20 голосов
/ 08 июня 2010

У меня есть таблица MEN в SQL Server 2008, которая содержит 150 строк.

как я могу показать только четные или только нечетные строки?

заранее спасибо

Ответы [ 14 ]

20 голосов
/ 08 июня 2010

Выезд ROW_NUMBER ()

SELECT t.First, t.Last
FROM (
    SELECT *, Row_Number() OVER(ORDER BY First, Last) AS RowNumber 
            --Row_Number() starts with 1
    FROM Table1
) t
WHERE t.RowNumber % 2 = 0 --Even
--WHERE t.RowNumber % 2 = 1 --Odd
14 голосов
/ 08 июня 2010

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

Показывать нечетное:

Select * from MEN where (RowID % 2) = 1

Чтобы показать даже:

Select * from MEN where (RowID % 2) = 0
5 голосов
/ 26 апреля 2016

БЫСТРО: Битовый вместо модуля.

select * from MEN where (id&1)=0;

Случайный вопрос: Вы действительно используете имена таблиц в верхнем регистре? Обычно прописные буквы зарезервированы для ключевых слов. (По договоренности)

4 голосов
/ 03 июня 2016

запрос нечетного числа:

SELECT *
  FROM   ( SELECT rownum rn, empno, ename
           FROM emp
         ) temp
  WHERE  MOD(temp.rn,2) = 1

запрос четного числа:

SELECT *
  FROM   ( SELECT rownum rn, empno, ename
           FROM emp
         ) temp
  WHERE  MOD(temp.rn,3) = 0
3 голосов
/ 09 августа 2014
  SELECT * FROM (SELECT ROW_NUMBER () OVER (ORDER BY sal DESC) row_number, sr,sal FROM empsal) a WHERE (row_number%2) = 1

и

      SELECT * FROM (SELECT ROW_NUMBER () OVER (ORDER BY sal DESC) row_number, sr,sal FROM   empsal) a WHERE (row_number%2) = 0
2 голосов
/ 10 марта 2016

Для записи четных значений:

выберите * из www, где mod (salary, 2) = 0;

Для записи нечетных значений:

выберите * из www, гдемод (заработная плата, 2) = 0;!

2 голосов
/ 08 июня 2010

Попробуйте:

нечетное:

select * from( 
SELECT col1, col2, ROW_NUMBER() OVER(ORDER BY col1 DESC) AS 'RowNumber', 
FROM table1
) d where (RowNumber % 2) = 1 

четное:

select * from( 
SELECT col1, col2, ROW_NUMBER() OVER(ORDER BY col1 DESC) AS 'RowNumber', 
FROM table1
) d where (RowNumber % 2) = 0
1 голос
/ 05 сентября 2013
select * from Tablename 
where id%2=0
1 голос
/ 28 сентября 2012
SELECT *
  FROM   
  ( 
     SELECT rownum rn, empno, ename
     FROM emp
  ) temp
  WHERE  MOD(temp.rn,2) = 1
0 голосов
/ 12 марта 2019

База данных Oracle

ODD ROWS

select * from (select mod(rownum,2) as num , employees.* from employees) where num =0;

ДАЖЕ СТРОК

select * from (select mod(rownum,2) as num , employees.* from employees) where num =1; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...