How can I merge the columns from two tables into one output?

前端 未结 5 930
我寻月下人不归
我寻月下人不归 2020-12-07 12:07

I have two tables with similar information. Let\'s call them items_a and items_b. They should be one, but they are coming from different sources, s

相关标签:
5条回答
  • 2020-12-07 12:40

    When your are three tables or more, just add union and left outer join:

    select a.col1, b.col2, a.col3, b.col4, a.category_id 
    from 
    (
        select category_id from a
        union
        select category_id from b
    ) as c
    left outer join a on a.category_id = c.category_id
    left outer join b on b.category_id = c.category_id
    
    0 讨论(0)
  • 2020-12-07 12:48

    I had a similar problem with a small difference: some a.category_id are not in b and some b.category_id are not in a.
    To solve this problem just adapt the excelent answer from beny23 to

    select a.col1, b.col2, a.col3, b.col4, a.category_id 
    from items_a a
    LEFT OUTER JOIN
    items_b b 
    on a.category_id = b.category_id
    

    Hope this helps someone.
    Regards.

    0 讨论(0)
  • 2020-12-07 12:50

    I guess that what you want to do is an UNION of both tables.

    If both tables have the same columns then you can just do

    SELECT category_id, col1, col2, col3
      FROM items_a
    UNION 
    SELECT category_id, col1, col2, col3 
      FROM items_b
    

    Else, you might have to do something like

    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
    
    0 讨论(0)
  • 2020-12-07 12:56
    SELECT col1,
      col2
    FROM
      (SELECT rownum X,col_table1 FROM table1) T1
    INNER JOIN
      (SELECT rownum Y, col_table2 FROM table2) T2
    ON T1.X=T2.Y;
    
    0 讨论(0)
  • 2020-12-07 13:00

    Specifying the columns on your query should do the trick:

    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
    

    should do the trick with regards to picking the columns you want.

    To get around the fact that some data is only in items_a and some data is only in items_b, you would be able to do:

    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
    

    The coalesce function will return the first non-null value, so for each row if col1 is non null, it'll use that, otherwise it'll get the value from col2, etc.

    0 讨论(0)
提交回复
热议问题