有没有办法根据 Postgres 中的计数器列重复行?

问题描述

我有两个表 A 和 B。

A 有一个表 B 中行的 id 和一个计数器:

b_id  integer not null references B(id),count integer not null default 1

Postgres 有没有办法返回 A 的查询,其中 B 中的行重复了 count 次?

解决方法

是的。使用generate_series()

select t.*,n
from t cross join lateral
     generate_series(1,t.count,1) gs(n);

以上实际上是编写逻辑的冗长方式。我更喜欢上面的内容,因为它对正在发生的事情非常明确。但是,您可以将其简化为:

select t.*,generate_series(1,1) as n
from t;