写法一
SELECT *
FROM (
SELECT
*,
ROW_NUMBER() OVER (ORDER BY id) AS rowNumber
FROM
表名 AS t1
LEFT JOIN
表二 AS t2 ON t1.连接字段 = t2.连接字段
LEFT JOIN
表三 AS t3 ON t1.另一个连接字段 = t3.另一个连接字段
WHERE
条件 -- 这里替换为您的筛选条件
) AS subQuery
WHERE
rowNumber BETWEEN @pageFirst AND @pageEnd;
写法二
DECLARE @PageIndex INT = 2; -- 当前页码
DECLARE @PageSize INT = 10; -- 每页记录数
SELECT
u.UserId,
u.UserName,
o.OrderId,
o.OrderDate,
o.OrderAmount,
d.DetailId, -- 假设 OrderDetails 表有一个 DetailId 列
d.DetailDescription -- 假设 OrderDetails 表有一个 DetailDescription 列
FROM
Users u
JOIN
Orders o ON u.UserId = o.UserId
JOIN
OrderDetails d ON o.OrderId = d.OrderId -- 假设 OrderDetails 通过 OrderId 与 Orders 表连接
WHERE
u.UserName LIKE '%John%' -- 筛选条件:用户名包含 "John"
ORDER BY
u.UserId -- 根据 UserId 排序
OFFSET (@PageIndex - 1) * @PageSize ROWS -- 跳过指定数量的记录以实现分页
FETCH NEXT @PageSize ROWS ONLY; -- 获取指定数量的记录作为当前页的数据