可以說我有一張學生表,裏面有1000條記錄。選擇範圍內的100條記錄
我想寫這樣一個查詢,應該只選擇100條記錄,但我應該能夠定義範圍。
Ex. 100 records showing from 501 to 600
or 100 records showing from 101 to 200
P.S.是!有一個標識列,但它由隨機數組成。
謝謝你的幫助。
可以說我有一張學生表,裏面有1000條記錄。選擇範圍內的100條記錄
我想寫這樣一個查詢,應該只選擇100條記錄,但我應該能夠定義範圍。
Ex. 100 records showing from 501 to 600
or 100 records showing from 101 to 200
P.S.是!有一個標識列,但它由隨機數組成。
謝謝你的幫助。
這應該這樣做。
SELECT a.* FROM (
SELECT Row_Number() OVER(ORDER BY table.MySortCol) as RowNum,
table.* -- columns you need
FROM table
) a
WHERE a.RowNum between 1 and 100
這會給你一個一致的結果,即使你沒有在桌子上順序ID設置,這樣你就可以進行有意義的傳呼或你有什麼。
完美的作品。謝謝@ JTC –
非常歡迎!如果您遇到任何其他問題,請讓我知道! – jTC
使用TOP
[docs]爲SQL Server
SELECT TOP 100 *
FROM tableName
WHERE columnName BETWEEN 0 AND 100
但LIMIT
爲MySQL
SELECT *
FROM tableName
WHERE col BETWEEN 0 AND 100
LIMIT 100
更新1
WITH sampleRec
AS
(
SELECT column1, col2, col3,
ROW_NUMBER() OVER (ORDER BY colName) rn
FROM yourTableName
)
SELECT column1, col2, col3
FROM sampleRec
WHERE rn BETWEEN 1 AND 100
但我沒有任何列從1到100,所以在這種情況下,我應該選擇第1行到第100行。你知道如何做到這一點? –
你能否顯示一些樣本記錄?等待我將使用'CTE'更新答案 –
Row_number創建一個int字段,爲您提供可以過濾的1至n個順序字段。 – jTC
如果你正在使用MySQL使用limit命令。
SELECT * FROM MyTable的極限X,Y
其中x是開始記錄和Y是記錄數。 因此,對於你的501到600,你會做極限501,100。
這可能適用於其他SQL版本 - 只需查看系統的LIMIT命令即可。
你如何定義範圍?應該有一些列定義它,你不能只要求501-600號記錄而不定義記錄號 –
我計算名爲RowNum的新列,以便知道我有多少記錄,然後給出範圍。 –