如何从oracle表中选择偶数记录?

2023-12-21

我正在使用下面的查询来检索偶数记录。但在结果中它没有显示任何行

select ename,job from emp where mod(rownum,2)=0;

为什么 mod(rownum,2) 在 where 条件下不起作用

您还可以给出选择奇数记录的查询吗

这个查询有什么问题吗?

请提出建议..


它不起作用,因为:对于第一行ROWNUM is 1并且,在这种情况下,MOD(ROWNUM,2) is 1自从你的WHERE声明是MOD(ROWNUM,2)=0那么这减少到1=0并且该行被丢弃。然后将针对后续行进行测试ROWNUM1(因为前一行不再出现在输出中并且没有行号),这将再次使测试失败并被丢弃。重复,令人作呕,所有行都失败了WHERE测试并被丢弃。

如果您尝试使用这种方式获取奇数行WHERE MOD(ROWNUM,2)=1那么它将仅返回第一行,第二行和后续行将无法通过测试,并且永远不会包含在查询中。

正如 Vijaykumar Hadalgi 所建议的,您需要在子查询中选择 ROWNUM(它可以对所有行进行编号,而无需使用 where 子句来限制它),然后在外部查询中执行测试来限制行:

SELECT ename, job
FROM   (
  SELECT ename,
         job,
         ROWNUM AS row_id             -- Generate ROWNUM second.
  FROM   (
    SELECT ename, job
    FROM   Emp
    ORDER BY ename                    -- ORDER BY first.
  )
)
WHERE  MOD( row_id, 2 ) = 0;          -- Filter third.

SQLFIDDLE http://sqlfiddle.com/#!4/c4e63/595

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从oracle表中选择偶数记录? 的相关文章

随机推荐