2014-12-02 35 views
2

我發現分頁最好的辦法在SQL Server 2012是OFFSET FETCH ClauseSQL Server 2012中 - 無分頁ORDER子句

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

它工作正常。

現在,在我的情況,我的軟件動態生成SQL Server表,我只知道表名。

我不知道動態生成的表中的列名。

現在在這種情況下這個分頁是如何工作的?因爲我不知道哪一列應與ORDER BY子句中使用不OFFSET取條款...

任何替代解決方案?

感謝

+0

沒有'ORDER BY',有**是沒有順序**在結果集中,所以'OFFSET ...取...'是** **毫無意義...... – 2014-12-02 10:48:18

+0

這是什麼都與分頁有關?所有你問的是如何執行一個動態的順序「。 – usr 2014-12-02 10:48:24

+0

可能重複的[SQL Server Dynamic Order By Problem](http://stackoverflow.com/questions/751642/sql-server-dynamic-order-by-problem ) – usr 2014-12-02 10:48:48

回答

3

您可以通過列索引順序是否有幫助:

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

這將在第一列的順序。如果排序列存儲在UI上(由用戶控制),則需要在UI上存儲列索引並將其傳遞給SQL Server以在排序中使用。

如果您只是想通過記錄添加到表中的順序訂購,您將需要一個主鍵,標識列。確保這是表格中的第一列,並使用ORDER BY 1

+0

如果你的桌子加入其他人呢? – schmoopy 2017-03-01 18:26:42

+0

@schmoopy我不明白,如果你有新的問題,請詢問。 – Tanner 2017-03-02 08:50:36