代码之家  ›  专栏  ›  技术社区  ›  DotNetRussell

在左联接上寻呼Postgres

  •  2
  • DotNetRussell  · 技术社区  · 6 年前

    总结:

    设置:

    • 服务器端我正在使用F#
    • 数据库是postgres

    问题 :

    enter image description here

    我有3张桌子,桌子[A,B,C]。表A与表B和C有一对多的关系

    select * from A left join B on a.id = b.tableidb left join C on a.id = c.tableidc

    enter image description here

    我可以坐7排,没关系。这是我想要的所有数据。当我们试图寻呼时,问题就来了

    select * from A left join B on a.id = b.tableidb left join C on a.id = c.tableidc limit 5 offset 0

    enter image description here

    预期解决方案

    我想说的是 从表A中偏移0处给我5行,然后在表B和C上左联接

    有办法在博士后做到这一点吗?

    1 回复  |  直到 6 年前
        1
  •  5
  •   Laurenz Albe    6 年前

    您可以在 FROM 条款。

    您只需限制其中的行数:

    SELECT *
    FROM (SELECT * FROM A
          ORDER BY a.id
          LIMIT 5) AS al
       LEFT JOIN b ON al.id = b.tableidb
       LEFT JOIN c on al.id = c.tableidc;
    

    1. 使用 LIMIT 没有 ORDER BY

    2. 如果考虑分页,请不要使用 限制 OFFSET .

      相反,记住最后一个 a.id 您第一次选择并查询 WHERE a.id > previous_a_id LIMIT 5 .