假设我有一个学生表,其中有 1000 条记录。
我想编写这样一个查询,它应该只选择 100 条记录,但我应该能够定义范围。
Ex. 100 records showing from 501 to 600
or 100 records showing from 101 to 200
PS是的!有一个标识列,但它由随机数组成。
感谢您的帮助。
这应该这样做。
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,这也会为您提供一致的结果集,因此您可以执行有意义的分页或您有什么。
对 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
如果您使用 MySQL,请使用 LIMIT 命令。
SELECT * FROM MyTable 限制 X, Y
其中 X 是您的开始记录,Y 是记录数。所以对于你的 501 到 600,你会做 LIMIT 501, 100。
这可能适用于其他 SQL 版本 - 只需查找系统的 LIMIT 命令。