sql - 如何在Postgresql中将表的每一行扩展为可变数量的行
问题描述
我有一个表,它定义了具有给定迭代次数的对象,假设这是一个轮数可变的游戏。
# select * from game;
game_id | num_rounds
--------+-----------
A | 2
B | 3
C | 1
我想创建一个选择语句,它将为每场比赛生成一个每轮一行的表格。
# select ???;
game_id | round_number
--------+-------------
A | 1
A | 2
B | 1
B | 2
B | 3
C | 1
解决方案
不需要子查询和加入generate_series()
。横向连接更简单,更有效:
select g.game_id, s.round_number
from game g
cross join lateral generate_series(1, g.num_rounds) as s(round_number)
order by g.game_id, s.round_number
推荐阅读
- sql - 使用左连接时无法绑定表
- amazon-web-services - 如何通过 Cloudwatch 事件监控 AWS Lambda 事件
- delphi - 有没有办法判断数据集或对象是否分配给另一个对象的变量?
- swift - “在展开可选值时意外发现 nil”将值推送到另一个视图控制器上的 label.text
- c++ - 视觉接受来自 std::byte 迭代器的 std::string
- android - Ionic 应用程序 - 您如何深度链接到播客应用程序(适用于 Android)?
- swift - 当值存在时,Firebase 快照等于 null
- php - 正则表达式检查有效的目录路径
- python - 根据用户的输入打印正确的事件
- arrays - 使用 itemgetter 获取给定索引列表的子 3d 数组