Postgresql加入限制

时间:2016-06-29 19:43:38

标签: postgresql

我正在创建SQL查询,该查询涉及具有1到N关系的多个表以支持分页。

为了得到前10位父母,我试着去做

SELECT * from parent p
LEFT JOIN child c
ON c.parent_id = p.id
LIMIT 10

如果任何父母有多个孩子

,这不起作用

我可以做的另一个选择是

SELECT * from parent LIMIT 10 into temp_p;
SELECT * from temp_p p
LEFT JOIN child c
ON c.parent_id = p.id

这非常笨拙。我想做的是

SELECT * from parent p LIMIT 10
LEFT JOIN child c
ON c.parent_id = p.id

但当然语法错了。我想知道Postgresql是否有某种方式来支持我想做的事情。

1 个答案:

答案 0 :(得分:7)

使用common table expression

WITH ten_parents AS (
  SELECT * from parent LIMIT 10)
SELECT *
  FROM ten_parents p
    LEFT JOIN child c
      ON c.parent_id = p.id