假设我有一张学生表,其中有1000条记录。
我想写一个应该只选择100条记录的查询,但我应该能够定义范围。
Ex. 100 records showing from 501 to 600
or 100 records showing from 101 to 200
P.S。是!有一个标识列,但它由随机数组成。
感谢您的帮助。
答案 0 :(得分:1)
对SQL Server使用 TOP
[docs]
SELECT TOP 100 *
FROM tableName
WHERE columnName BETWEEN 0 AND 100
<击> 撞击>
<击>但是在MySQL的LIMIT
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 :(得分:1)
如果您使用的是MySQL,请使用LIMIT命令。
SELECT * FROM MyTable LIMIT X,Y
其中X是您的开始记录,Y是记录数。 所以对于你的501到600你会做LIMIT 501,100。
这可能适用于其他SQL版本 - 只需查看系统的LIMIT命令。
答案 2 :(得分:1)
这应该这样做。
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,这也会为您提供一致的结果集,因此您可以执行有意义的分页或者您拥有的内容。