SQL Server 2012 - 没有 Order 子句的分页

标签 sql sql-server

我发现 SQL Server 2012 中分页的最佳方法是 OFFSET FETCH Clause

SELECT First Name + ' ' + Last Name 
FROM Employees 
ORDER BY First Name OFFSET 10 ROWS;

效果很好。

现在就我而言,我的软件动态生成 SQL Server 表,我只知道表名称。

我不知道动态生成的表中的列名称。

现在在这种情况下,分页是如何工作的?因为我不知道哪一列应该与带有 OFFSET Fetch 子句的 ORDER BY 子句一起使用..

还有其他解决方案吗?

谢谢

最佳答案

如果有帮助,您可以按列索引排序:

SELECT First Name + ' ' + Last Name 
FROM Employees 
ORDER BY 1 OFFSET 10 ROWS; 

这将按第一列排序。如果排序列存储在 UI 上(由用户控制),则需要将列索引存储在 UI 上并将其传递给 SQL Server 以在排序中使用。

如果您只想按记录添加到表中的顺序进行排序,则需要主键、标识列。确保这是表格中的第一列并使用 ORDER BY 1

关于SQL Server 2012 - 没有 Order 子句的分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27247463/

相关文章:

sql - SELECT * FROM 表,用他们的名字替换 FK

sql-server - 奇怪的 WHERE col = NULL 行为

c# - 参数化插入多行

sql-server - 解析SSIS包

sql - 如何向 SQL 中的重复数据集添加计数器?

mysql - 如何在 MySQL 5.7 中获取每个月的特定日期间隔

php - 按查询分组在 Strict ONLY_FULL_GROUP_BY SQL 模式下不起作用

php - 需要Sql逻辑

sql - 将存储过程的多个结果集存储到不同的表中

c# - 需要结合 WHERE、AND、OR 的 SQL 帮助