按列分组,首选另一列不为空的行

3hvapo4f  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(366)

假设我有一个这样的表,有两个外键:

| col1 | fkey1 | fkey2 |
|------|-------|-------|
| foo  | 123   | null  |
| foo  | 123   | 456   |
| bar  | 789   | null  |

我怎么分组 col1 ,其中的行具有首选项 fkey2 不是 null ? 结果如下:

| col1 | fkey1 | fkey2 |
|------|-------|-------|
| foo  | 123   | 456   |
| bar  | 789   | null  |

另一个考虑是 fkey1 有一个 not null 约束它,而 fkey2 没有。

7vhp5slm

7vhp5slm1#

对于此数据集,可以使用简单的聚合:

select col1, fkey1, max(fkey2) fkey2
from mytable
group by col1, fkey1

但我怀疑你真的想要 distinct on :

select distinct on(col1) t.*
from mytable t
order by col1, fkey2

相关问题