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

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

【问题讨论】:

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

标签: sql oracle oracle11g syntax-error


【解决方案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 开始:stackoverflow.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;

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-10-01
  • 2020-07-27
  • 2011-05-24
  • 2020-10-18
  • 1970-01-01
  • 2016-04-17
  • 2015-01-18
  • 1970-01-01
相关资源
最近更新 更多