如何在 Oracle 11g 中选择前五行或“N”行 [重复]

Posted

技术标签:

【中文标题】如何在 Oracle 11g 中选择前五行或“N”行 [重复]【英文标题】:How to select top five or 'N' rows in Oracle 11g [duplicate] 【发布时间】:2014-01-06 12:51:05 【问题描述】:
select distinct ani_digit, ani_business_line from cta_tq_matrix_exp limit 5

我想从我的结果集中选择前五行。如果我使用上述查询,则会出现语法错误。

【问题讨论】:

实际上。我不想订购我的结果集。我只想要 5 行。 @KarthikeyanSukkoor - 所以你不在乎你得到哪 5 行? 是的。我正在区分两列,任何五行就足够了 【参考方案1】:

LIMIT 子句在 Oracle 中不可用。

看到您的查询,您似乎只对特定数量的行感兴趣(不是根据特定列值排序),因此您可以使用 ROWNUM 子句来限制返回的行数.

select distinct ani_digit, ani_business_line from cta_tq_matrix_exp WHERE rownum <= 5

如果您想对结果集进行排序然后限制行数,您可以根据上面 cmets 中 Colin 提供的链接中的详细信息修改您的查询。

【讨论】:

是的。我做了这个查询。但在结果集中只得到一行。如果我使用像“从 cta_tq_matrix_exp 中选择不同的 ani_digit,ani_business_line”这样的查询得到三行结果。我觉得不同的键有些问题。 只需.. 使用任何一个本地表并获取两列的不同值并找到前五行。 如果DISTINCT 得到3 行,那么ROWNUM 不能只返回一行,或者减少行数。 没有。我只是这样。请从您的本地数据库中尝试一个示例。 等效于LIMIT 子句在 Oracle 中可用 从 12cR1 开始:***.com/a/26051830/1461424【参考方案2】:

您需要使用DISTINCT在选择“前 5 名”之前

SELECT * FROM 
(SELECT DISTINCT ani_digit, ani_business_line FROM cta_tq_matrix_exp) A
WHERE rownum <= 5

【讨论】:

谢谢.. 它工作正常【参考方案3】:
  select distinct ani_digit, ani_business_line from cta_tq_matrix_exp where rownum<=5;

【讨论】:

这对我的情况不起作用。 这是一个常见的错误,oracle 11g,会根据rownum随机选择N个,然后进行排序。从 oracle 12 c 开始限制可用的关键字。 blogs.oracle.com/oraclemagazine/on-rownum-and-limiting-results

以上是关于如何在 Oracle 11g 中选择前五行或“N”行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Oracle 11g 的“选择”查询中添加偏移量?

Oracle Database 11g安装教程

怎样从网上下载oracle 10g

Oracle 11g,如何加快“in”查询

如何完全卸载Oracle 11g数据库

windows7 安装的oracle11g怎么新建数据库