将多个表混合成一个

时间:2014-01-15 13:35:13

标签: mysql join union

我认为我想要的东西与 union 和/或 加入 有关但我无法想象到目前为止如何做到这一点,这就是我寻求帮助。

我有一些表有不同的数据,但结构完全相同,我想把它们混合成一个。假设我有两张桌子。

Store_1

Product      Quantity
--------     ----------
AAA          25
BBB          15

STORE_2

Product      Quantity
--------     ----------
AAA          10
CCC          40

我想要的是这两个表的混合:

Product      Store_1_Quantity     Store_2_Quantity
--------     ----------------     ----------------
AAA          25                   10
BBB          15                   Null / 0
CCC          Null / 0             40

这并不仅限于两张桌子。实际上在某些情况下我需要将10个表混合成一个所以任何想法?

2 个答案:

答案 0 :(得分:1)

您需要使用full outer join。问题是MySQL本身不支持它们,但它们可以使用左右连接emulated quite easily

根据您的具体情况,以下查询应该有效:

SELECT A.PRODUCT, A.QUANTITY, B.QUANTITY FROM STORE_1 A
LEFT JOIN STORE_2 B ON (A.PRODUCT = B.PRODUCT)
UNION ALL
SELECT B.PRODUCT, A.QUANTITY, B.QUANTITY FROM STORE_1 A
RIGHT JOIN STORE_2 B ON (A.PRODUCT = B.PRODUCT)
WHERE A.PRODUCT IS NULL;

答案 1 :(得分:0)

您需要 UNION LEFT JOIN 。试试这个:

SELECT p.*, store_1.quantity AS Store_1_Quantity, store_2.quantity AS Store_2_Quantity
FROM (SELECT Product FROM Store_1 UNION SELECT Product FROM Store_2) AS p
LEFT JOIN Store_1
ON p.product = Store_1.product
LEFT JOIN Store_2
ON p.product = Store_2.product

工作演示:http://sqlfiddle.com/#!2/8f4bc1/3