我认为我想要的东西与 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个表混合成一个所以任何想法?
答案 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