如何 select 在 sql 中返回(查询)的前 50 行和前 100 行之间?

How to select between the top 50 and 100 returned (queried) rows in sql?

如何使用 MSSQL 跳过第一组 50 条记录,return 下一组 50 条记录,并从查询中排除所有剩余记录。本质上,就像人们想象的下面代码会做的那样,其中 identitynumber 是记录的标识。

SELECT TOP(100) * FROM dbo.users
WHERE users.name = 'John' AND IDENTITYNUMBER >=50 AND IDENTITYNUMBER <=100

我猜你需要 OFFSET 关键字。

SELECT employee_id, first_name, last_name, salary 
FROM employees 
ORDER BY salary DESC 
OFFSET 5 ROWS 
FETCH NEXT 5 ROWS ONLY;

或者您的情况:

select * from dbo.Users
where name = 'John'
order by users.name
offset 50 rows
fetch next 50 rows only;

来源:https://www.sqltutorial.org/sql-fetch/

试试这样的东西

SELECT * FROM dbo.users
WHERE users.name = 'John'
ORDER BY users.name
OFFSET 50 ROWS
FETCH NEXT 50 ROWS ONLY;

你可以使用 ROW_NUMBER()

CREATE TABLE #users ( id int, name varchar(100) )

INSERT INTO #users
VALUES (1,'John'),(2,'John'),(3,'John'),(4,'Not John'),(5,'John')

SELECT TOP(2) x.*
FROM (
        SELECT *, ROW_NUMBER() OVER (ORDER BY name) AS rowNumber
        FROM #users
        WHERE name = 'John'
     ) AS x
WHERE x.rowNumber > 2

DROP TABLE #users

Check this fiddle