0

要在 SQL 中显示前半部分记录,我们使用 SELECT TOP 50 PERCENT * FROM TableName; 同样,是否有任何解决方案可以显示最后 50%的记录,认为我们不知道该表中可能存在多少记录

4

3 回答 3

3

只需按相反的顺序排序,如果需要,在外部选择中再次排序

select * from
(
  select top 50 percent * 
    from table 
  order by col1 desc
) order by col1 asc
于 2013-07-08T17:04:59.610 回答
0

假设您在表上有一个 ID,该 ID 越晚插入记录:

您可能必须编写脚本。在伪代码中:

num = numRecords(table) / 2
SELECT * FROM table ORDER BY ID DESC LIMIT 'num'

或类似的东西,这取决于您选择的语言。

无论是这个还是一些内部选择,我都尽量避免。

于 2013-07-08T17:04:50.117 回答
0

NTILE(n)窗口功能是为此类工作而设计的。它将结果集划分为具有相同行数的组,将它们从 1 编号到(count of rows)/n。(当这种划分不会导致整数时,会有一点细微差别。阅读文档。)

;with cte as(select *, ntile(2) over(order by colname) as rn from tablename)
select * from cte where rn = 2

这意味着结果集将分为 2 组,前半部分将 getrn = 1和第二组rn = 2

于 2015-09-03T19:08:16.157 回答