【发布时间】:2021-10-25 21:13:27
【问题描述】:
我以查询返回的方式连接两个表:
| parent.name | child.name | child.col |
|---|---|---|
| First | A | foo |
| Second | A | foo |
| Third | A | foo |
| Fourth | B | bar |
| Fifth | C | baz |
| Sixth | C | baz |
我只需要child.col 字段中的数据首次出现即可。
我尝试过使用 windows 或按child.name 分组并合并除第一行之外的所有内容,但我想到的最简单的解决方案是像这样计算每个唯一子项的索引:
| parent.name | child.name | child.col | instance |
|---|---|---|---|
| First | A | foo | 1 |
| Second | A | foo | 2 |
| Third | A | foo | 3 |
| Fourth | B | bar | 1 |
| Fifth | C | baz | 1 |
| Sixth | C | baz | 2 |
然后我可以使用 case 语句仅在 instance == 1 时显示 child.col 值。
我不知道如何实现这一点。我正在处理的真正查询是怪物,所以我必须展示的唯一代码是我为创建上述示例而编写的简单代码:
SELECT parent.name, child.name, child.col
FROM parent, child
WHERE parent.match = child.match
【问题讨论】:
标签: sql postgresql