0

假设我有一个学生表,其中有 1000 条记录。

我想编写这样一个查询,它应该只选择 100 条记录,但我应该能够定义范围。

Ex. 100 records showing from 501 to 600
or 100 records showing from 101 to 200

PS是的!有一个标识列,但它由随机数组成。

感谢您的帮助。

4

3 回答 3

3

这应该这样做。

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,这也会为您提供一致的结果集,因此您可以执行有意义的分页或您有什么。

于 2012-10-31T13:10:13.070 回答
1

对 SQL Server使用TOP[docs]

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
于 2012-10-31T13:03:34.123 回答
1

如果您使用 MySQL,请使用 LIMIT 命令。

SELECT * FROM MyTable 限制 X, Y

其中 X 是您的开始记录,Y 是记录数。所以对于你的 501 到 600,你会做 LIMIT 501, 100。

这可能适用于其他 SQL 版本 - 只需查找系统的 LIMIT 命令。

于 2012-10-31T13:04:12.590 回答