Postgresql 在Postgres中联接并合并表以获得特定列中的公共行
我在Postgres数据库中有几个表。我已经加入并合并了这些表。但是,我希望特定列中的公共值一起出现在最终的表中(最后,我希望对表执行groupby和最大值计算) 测试表的架构如下所示: 架构(PostgreSQL v11) 我对表执行了连接、并集和操作,以获得所需的列 查询#1Postgresql 在Postgres中联接并合并表以获得特定列中的公共行,postgresql,join,union,Postgresql,Join,Union,我在Postgres数据库中有几个表。我已经加入并合并了这些表。但是,我希望特定列中的公共值一起出现在最终的表中(最后,我希望对表执行groupby和最大值计算) 测试表的架构如下所示: 架构(PostgreSQL v11) 我对表执行了连接、并集和操作,以获得所需的列 查询#1 SELECT table1.id, table1.seq, table2.score FROM table1 INNER JOIN table2 ON table1.id = table2.id UNION
SELECT table1.id, table1.seq, table2.score
FROM table1 INNER JOIN table2 ON table1.id = table2.id
UNION
SELECT table3.id, table3.seq, table4.score
FROM table3 INNER JOIN table4 ON table3.id = table4.id
;
输出如下所示:
| id | seq |得分|
| ----- | ------ | ----- |
|UA502 | qrst | 8.2|
|UA502 | abcdef | 2.2|
|UA504 | yzab | 8.8|
|UA503 | uvwx | 8.6|
|UA504 | lmnop | 2.8|
|UA503 | ghijk | 2.6|
但是,所需的输出应为:
| id | seq |得分|
| ----- | ------ | ----- |
|UA502 | qrst | 8.2|
|UA502 | abcdef | 2.2|
|UA504 | yzab | 8.8|
|UA504 | lmnop | 2.8|
|UA503 | uvwx | 8.6|
|UA503 | ghijk | 2.6|
我应该如何修改查询以获得所需的输出?也许我遗漏了一些东西,但是
按id排序
不会这样做吗?哦,是的!!我错过了:)谢谢你的指点
SELECT table1.id, table1.seq, table2.score
FROM table1 INNER JOIN table2 ON table1.id = table2.id
UNION
SELECT table3.id, table3.seq, table4.score
FROM table3 INNER JOIN table4 ON table3.id = table4.id
;