sqlServer连表分页查询

 写法一

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; -- 获取指定数量的记录作为当前页的数据

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值