如何在SQL中显示记录的后半部分

时间:2013-07-08 16:59:24

标签: sql sql-server tsql

显示我们使用的SQL中的前半部分记录 从TableName中选择前50%*; 同样聪明,是否有任何解决方案显示最后50%的记录,认为我们不知道该表中是否存在记录

3 个答案:

答案 0 :(得分:3)

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

中排序
select * from
(
  select top 50 percent * 
    from table 
  order by col1 desc
) order by col1 asc

答案 1 :(得分:0)

假设桌面上的ID越高,则插入记录越晚:

您可能需要编写脚本。在伪代码中:

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

或者那种效果,取决于您选择的语言。

这个或一些内部选择,我试图尽可能避免。

答案 2 :(得分: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组,上半部分将获得rn = 1,第二组将rn = 2