我正在创建涉及多个表格以支持分页的1到N关系的SQL查询。
为了获取前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是否有某种方法来支持我想做的事情。
select * from (select * from parent limit 10) p ...
)同样有效。当然,并不是说CTE是错误的。 - mu is too short