【问题标题】:How to fetch nth row in terdata with out using order by如何在不使用 order by 的情况下获取 teradata 中的第 n 行
【发布时间】:2018-11-01 14:04:13
【问题描述】:

如何在不使用 order by 的情况下获取 teradata 中的第 n 行

【问题讨论】:

  • 您总是必须以某种方式订购 - 我们怎么知道哪一行是第 n 行?

标签: sql teradata


【解决方案1】:
select * from <table_name>
qualify (sum(1) over( rows unbounded preceding )) =  <nth_row>

【讨论】:

  • 如果你多次运行相同的 n 值,你能保证总是得到相同的结果吗?如果这是不确定的,那么我认为您不能真正将其称为第 n 行。
  • @DavidCram:当没有 Order By Teradata 时,只会在所有列上添加一个(可能用于内部处理):-) 所以可能是一个确定性的结果,但没有接近第 n 行 :-)
  • @dnoeth 我知道它会为每一行添加 1。我只是不确定它使用什么样的邪恶巫术来决定返回行的顺序:-)。我一直假设编号顺序取决于哪些放大器恰好首先返回数据。然而,运行它几次似乎总是给我同样的结果。所以我的假设可能是错误的
  • 可能基于主索引
  • 如果我这样做select * from table,据我所知,它每次都以完全相同的顺序出现。如果我运行 select top N from table 没有 order by,据我所知,我每次都会得到相同的行。但是,那些前 n 行与我从 select * 获得的前 N ​​行不同。最后,这真的很愚蠢。我永远无法理解人们在这类问题中真正想要什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-12
  • 2011-10-12
  • 2018-10-12
  • 2021-08-12
  • 2018-10-04
  • 1970-01-01
相关资源
最近更新 更多