如何在sql server 2008中只显示偶数行或奇数行?

Gol*_*old 20 sql-server-2008

我在sql server 2008中有一个包含150行的表MEN.

我怎么能只显示偶数行或只显示奇数行?

提前致谢

Mat*_*ted 21

看看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
Run Code Online (Sandbox Code Playgroud)


z-b*_*oss 14

假设您的表具有自动编号字段"RowID",并且您只想选择RowID为偶数或奇数的记录.

显示奇怪:

Select * from MEN where (RowID % 2) = 1
Run Code Online (Sandbox Code Playgroud)

甚至显示:

Select * from MEN where (RowID % 2) = 0
Run Code Online (Sandbox Code Playgroud)

  • 你永远不能假设没有差距!将被删除的记录和交易回滚. (5认同)

小智 5

更快:按位代替模数。

select * from MEN where (id&1)=0;
Run Code Online (Sandbox Code Playgroud)

随机问题:您实际上使用大写的表名吗?通常大写保留给关键字。(按照惯例)


小智 5

奇数查询:

SELECT *
  FROM   ( SELECT rownum rn, empno, ename
           FROM emp
         ) temp
  WHERE  MOD(temp.rn,2) = 1
Run Code Online (Sandbox Code Playgroud)

偶数查询:

SELECT *
  FROM   ( SELECT rownum rn, empno, ename
           FROM emp
         ) temp
  WHERE  MOD(temp.rn,3) = 0
Run Code Online (Sandbox Code Playgroud)