在MySQL中,如何合并两个表中的单独列?

时间:2018-10-11 13:28:51

标签: mysql join

我想合并TableA和TableB中的值,并优先考虑TableA中的bundled_shipping_cost。仅当TableA的ID在TableA中不存在时,才应使用TableB的shipping_cost值。

是否有推荐的联接语句?

表A

id | bundled_shipping_cost |

1      |    100    |      
2      |    200    |      
3      |    300    |      
4      |    400    |    

TableB

id | shipping_cost |

1      |    95     |      
2      |    195    |      
5      |    50     |      
6      |    75     |    

TableC

id | final_shipping_cost |

1      |    100    |      
2      |    200    |    
3      |    300    |  
4      |    400    |    
5      |    50     |      
6      |    75     |    

2 个答案:

答案 0 :(得分:1)

  • 您需要种类的完全外部联接。使用两个不同的Select查询。
  • 在第一个“选择”查询中,从TableA获取所有行。
  • 在第二个Select查询中,仅从TableB获取那些不包含的行 使用TableALeft JoinWhere TableA.id IS NULL中存在。
  • 最终Union ALL他们:

尝试:

SELECT dt.id, 
       dt.final_shipping_cost 
FROM (
      SELECT t1.id, 
             t1.bundled_shipping_cost AS final_shipping_cost 
      FROM TableA AS t1 

      UNION ALL 

      SELECT t2.id, 
             t2.shipping_cost AS final_shipping_cost  
      FROM TableB AS t2 
      LEFT JOIN TableA AS t1 ON t1.id = t2.id 
      WHERE t1.id IS NULL 
    ) AS dt 
ORDER BY dt.id 

答案 1 :(得分:0)

尝试此查询:

select q.*from(SELECT *
    FROM `t1`
    union select * from t2) as q group by id