【问题标题】:How to do Select query range by range on a particular table如何在特定表上按范围选择查询范围
【发布时间】:2015-06-03 21:59:10
【问题描述】:

我有一个包含超过 80K 行的 temp_table。 在 aqua 中,我猜由于空间/内存限制,我无法在此表上执行 select *。

select * from #tmp

有没有办法按范围选择查询范围?

例如:- 给我前 10000 条记录,然后给我下 10000 条和下 10000 条,直到最后。

注意:-

   1) I am using Aqua Data Studio, where I am restricted to select max 5000 rows in one select query.

   2) I am using Sybase, which somehow doesn't allow  'except' and 'select top @var from table' syntax and ROWNUM() is not avaliable

谢谢!!

【问题讨论】:

标签: sql database sybase sap-ase


【解决方案1】:

您可以在 SQL Server 中使用类似以下的内容。只需为每个新迭代更新 @FirstRow。

declare @FirstRow int = 0
declare @Rows int = 10000

select top (@FirstRow+@Rows) * from Table
except
select top (@FirstRow) * from Table

set @FirstRow = @FirstRow + @Rows

select top (@FirstRow+@Rows) * from Table
except
select top (@FirstRow) * from Table

【讨论】:

  • 这是一个很好的解决方案,但是我正在使用的 Sybase 中不允许使用语法
【解决方案2】:

你能不能在表中的某个 id 上使用 where 子句之类的东西

select top n * from table where some_id > current_iteration_starting_point

例如

select top 200 * from tablename where some_id >  1 

并在下一次迭代中不断增加迭代起始点,例如从 1 到 201,依此类推。

【讨论】:

  • 这将始终给出顶部n 记录,而不是m 和`n`之间的记录范围
【解决方案3】:

【讨论】:

  • 是的,我知道,但我不能更改配置。
猜你喜欢
  • 2013-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多