如何在 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”行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章