【问题标题】:How to use OFSET and FETCH for table with JOIN如何使用 JOIN 对表使用 OFFSET 和 FETCH
【发布时间】:2021-05-26 01:31:46
【问题描述】:

我有一个非常简单的案例,有两个表:

create table Table1
(
    Id int,
    Name varchar(255),
)

create table Table2
(
    Id int,
    Name varchar(255),
    ParentId int
)

我想通过 Table1 获得一些行数(例如偏移 10 并获取 5)并加入 Table2。在 Table1 和 Table2 之间我有一个一对多的关系。

我试着写这样的东西:

SELECT * 
FROM Table1 
JOIN Table2 AS t2 ON Table1.Id = t2.ParentId 
ORDER BY Table1.Id 
    OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY

结果我从连接表中得到 5 行。但我想从 Table1 中获取 5 行,然后加入到 Table2 中。有人知道怎么做吗?

【问题讨论】:

  • 仅使用您正在使用的数据库进行标记。 MySQL 还是 Postgres?
  • 您还需要一个子查询或 CTE 来生成分页结果并将其加入 Table2

标签: sql postgresql


【解决方案1】:
SELECT *
FROM (SELECT * 
      FROM Table1
      ORDER BY Id
      OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY) AS t1
JOIN Table2 AS t2 ON t1.Id = t2.ParentId

谢谢大家!这很容易)

【讨论】:

    猜你喜欢
    • 2021-02-19
    • 2016-01-09
    • 2015-09-07
    • 2013-08-22
    • 1970-01-01
    • 2021-06-19
    • 2021-01-17
    • 2014-11-07
    • 2013-06-30
    相关资源
    最近更新 更多