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