通过公共密钥SQL合并两个数据集

时间:2017-11-28 12:28:08

标签: mysql sql

我有两个数据集:

skus表:

old_product_id  sku
       1        AAA

price_tables表

old_product_id  option_one  option_two
       1          3 Days    One Color
       1          7 Days    One Color

我以为我可以像这样合并:

SELECT old_product_id, null, option_one, option_two
FROM price_tables
GROUP BY old_product_id
UNION ALL
SELECT old_product_id, sku, null, null
FROM skus
GROUP BY old_product_id

但我得到以下结果:

old_product_id  NULL option_one  option_two
       1        NULL  3 Days     One Color
       1        AAA    NULL        NULL

预期产出:

old_product_id  Sku option_one  option_two
       1        AAA   3 Days     One Color
       1        AAA   7 Days     One Color

3 个答案:

答案 0 :(得分:1)

您不需要需要联接才能获得预期输出的联合

SELECT 
  s.old_product_id,
  s.sku,
  p.option_one,
  p.option_two 
FROM
  skus s
  JOIN price_tables p USING (old_product_id)

Demo

答案 1 :(得分:1)

尝试简单加入怎么样?

SELECT p.old_product_id, s.sku, p.option_one, p.option_two FROM price_tables p INNER JOIN skus s ON s.old_product_id = p.old_product_id

答案 2 :(得分:0)

尝试此查询

SELECT old_product_id, sku, '' As option_two FROM price_tables GROUP BY old_product_id, sku
UNION ALL
SELECT old_product_id, option_one, option_two FROM skus GROUP BY old_product_id, option_one, option_two

这会给你合适的结果。希望它能解决你的问题