我得到了2个具有几乎相同结构的表:

products

-----------------------------
ID | OrderNo | Name   | Size
-----------------------------
1  | 1000    | TShirt | S
-----------------------------


variants
(关系:variantsMasterID = productsID

-------------------------------
ID | MasterID | OrderNo | Size
-------------------------------
1  | 1        | 1001    | M
-------------------------------
2  | 1        | 1002    | L
-------------------------------


现在我需要得到以下结果:
(我需要products中的每一行和variants中的每一行)

1000 | TShirt | S
------------------
1001 | TShirt | M
------------------
1002 | TShirt | L
...


我正在这样尝试:

SELECT p.OrderNo, p.Name, p.Size FROM products p
UNION
SELECT v.OrderNo, p.Name, v.Size FROM variants v


有一个更好的方法吗?
结果是正确的,但是有点慢(products中的13000行和variants中的5000行)。

最佳答案

SELECT p.OrderNo, p.Name, v.Size
FROM products p
LEFT OUTER JOIN variants v
ON v.MasterID = p.ID


应该这样做。您可能希望使用INNER JOIN而不是LEFT OUTER JOIN;您的问题不清楚。

关于mysql - MySQL加入2张表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15250651/

10-11 02:41