0

假设我有一个看起来像这样的表,有两个外键:

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

我将如何分组col1,优先选择fkey2 不是 null的行?所以结果看起来像这样:

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

另一个考虑因素是对它fkey1not null限制,而fkey2没有。

4

1 回答 1

1

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

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
于 2020-06-11T23:10:13.600 回答