如何使用SQLAlchemy和PostgreSQL限制每个组的数据库查询结果
当您需要限制每个组的SQL查询结果时,您是否遇到过一项任务? 例如, 选择每个作者的三篇最受欢迎的文章 ? 如果没有,请考虑如何做 。 您会选择应用程序的所有作者并通过他们的三篇文章来进行迭代,还是编写PL / pgSQL函数? 仅使用一个请求,有两种更为优雅的方法可以做到这一点:window函数和横向联接 。 我们将在本文的后面重点介绍,但是您可以在此处了解它们的区别。 LATERAL是PostgreSQL(≥9.3)的关键字。 当它出现在JOIN子句中的子查询之前时,它允许子查询引用在外部范围中获得的列。 如果不存在关键字,PostgreSQL将独立评估子查询,因此它无助于实现我们的目标。 我们将使用两个带有此类列的数据库表: 作者: id…