如何将两个表中的列合并为一个输出?

bur*_*ger 41 sql postgresql

我有两张表相似的信息.让我们把它们items_aitems_b.他们应该是一个,但他们来自不同的来源,所以他们不是.当我完全加入这两个表时,某些行最终得到来自一个或两个表的数据.两个表中的一列是category_id.我想使用类别表跨组合表category_id.但是,我category_id现在有两列(一个来自items_a,一个来自items_b).有没有办法将两列合并为一列?

我希望这不是一个问题的混乱.

ben*_*y23 51

指定查询中的列应该可以解决问题:

select a.col1, b.col2, a.col3, b.col4, a.category_id 
from items_a a, items_b b 
where a.category_id = b.category_id
Run Code Online (Sandbox Code Playgroud)

应该做的就是选择你想要的列.

为了解决一些数据仅在items_a中而某些数据仅在items_b中的事实,您将能够:

select 
  coalesce(a.col1, b.col1) as col1, 
  coalesce(a.col2, b.col2) as col2,
  coalesce(a.col3, b.col3) as col3,
  a.category_id
from items_a a, items_b b
where a.category_id = b.category_id
Run Code Online (Sandbox Code Playgroud)

coalesce函数将返回第一个非null值,因此对于每一行,如果col1为非null,它将使用它,否则它将从col2获取值等.

  • 如果没有共同的id怎么办?我只想将列相互连接起来,没有共同的 id,只是它们出现的顺序? (2认同)

Est*_*ber 25

我猜你想要做的是一个UNION两个表.

如果两个表具有相同的列,那么您可以这样做

SELECT category_id, col1, col2, col3
  FROM items_a
UNION 
SELECT category_id, col1, col2, col3 
  FROM items_b
Run Code Online (Sandbox Code Playgroud)

否则,你可能需要做类似的事情

SELECT category_id, col1, col2, col3
  FROM items_a 
UNION 
SELECT category_id, col_1 as col1, col_2 as col2, col_3 as col3
  FROM items_b
Run Code Online (Sandbox Code Playgroud)