Mysql 左连接重复行
Mysql Left Join duplicate rows
我有 2 个 table 想合并在一起。第二个 table 很棘手,我会尽力在这里解释一下
以下 table 个有问题:
1) table1
2) table2
表 1
+---------+-----------+-------+-----------+------------+-----------------+
| Orderid | name | Sku | row_total | tax_amount | discount_amount |
+---------+-----------+-------+-----------+------------+-----------------+
| 002 | Product1 | Sku1 | 100 | 0.5 | 1.5 |
| 002 | Product2 | Sku2 | 200 | 0.5 | 1 |
| 002 | Product3 | Sku3 | 300 | 0.5 | 0 |
| 002 | Product4 | Sku4 | 400 | 0.5 | 5 |
| 002 | Product5 | Sku5 | 500 | 0.5 | 50 |
| 002 | Product6 | Sku6 | 600 | 0.5 | 0.5 |
| 002 | Product7 | Sku7 | 700 | 0.0 | 10 |
| 002 | Product8 | Sku8 | 800 | 1.5 | 0 |
| 002 | Product9 | Sku9 | 900 | 2 | 2 |
| 002 | Product10 | Sku10 | 1000 | 3 | 30 |
+---------+-----------+-------+-----------+------------+-----------------+
表 2
+----------+--------+------------+
| MOrderid | mowner | mrealorder |
+----------+--------+------------+
| 002 | 95 | 3333333 |
| 002 | 100 | 3333333 |
| 002 | 320 | 3333333 |
| 002 | 95 | 3333333 |
| 002 | 504 | 3333333 |
| 002 | 112 | 3333333 |
| 002 | 95 | 3333333 |
| 002 | 99 | 3333333 |
| 002 | 106 | 3333333 |
| 002 | 11 | 3333333 |
+----------+--------+------------+
这是我为获得所需输出而编写的查询,我已尝试显示我正在寻找的最终结果。
SELECT DISTINCT o.Orderid, o.name, o.Sku, o.row_total, o.tax_amount, o.discount_amount, m.mowner
FROM table1 o
JOIN table2 m ON ( o.Orderid = m.Morderid )
这是我在运行之后得到的结果
+---------+-----------+-------+-----------+------------+-----------------+--------+
| Orderid | name | Sku | row_total | tax_amount | discount_amount | mowner |
+---------+-----------+-------+-----------+------------+-----------------+--------+
| 002 | Product1 | Sku1 | 100 | 0.5 | 1.5 | 95 |
| 002 | Product2 | Sku2 | 200 | 0.5 | 1 | 95 |
| 002 | Product3 | Sku3 | 300 | 0.5 | 0 | 95 |
| 002 | Product4 | Sku4 | 400 | 0.5 | 5 | 95 |
| 002 | Product5 | Sku5 | 500 | 0.5 | 50 | 95 |
| 002 | Product6 | Sku6 | 600 | 0.5 | 0.5 | 95 |
| 002 | Product7 | Sku7 | 700 | 0.0 | 10 | 95 |
| 002 | Product8 | Sku8 | 800 | 1.5 | 0 | 95 |
| 002 | Product9 | Sku9 | 900 | 2 | 2 | 95 |
| 002 | Product10 | Sku10 | 1000 | 3 | 30 | 95 |
| 002 | Product1 | Sku1 | 100 | 0.5 | 1.5 | 100 |
| 002 | Product2 | Sku2 | 200 | 0.5 | 1 | 100 |
| 002 | Product3 | Sku3 | 300 | 0.5 | 0 | 100 |
| 002 | Product4 | Sku4 | 400 | 0.5 | 5 | 100 |
| 002 | Product5 | Sku5 | 500 | 0.5 | 50 | 100 |
| 002 | Product6 | Sku6 | 600 | 0.5 | 0.5 | 100 |
| 002 | Product7 | Sku7 | 700 | 0.0 | 10 | 100 |
| 002 | Product8 | Sku8 | 800 | 1.5 | 0 | 100 |
| 002 | Product9 | Sku9 | 900 | 2 | 2 | 100 |
| 002 | Product10 | Sku10 | 1000 | 3 | 30 | 100 |
| 002 | Product1 | Sku1 | 100 | 0.5 | 1.5 | 320 |
| 002 | Product2 | Sku2 | 200 | 0.5 | 1 | 320 |
| 002 | Product3 | Sku3 | 300 | 0.5 | 0 | 320 |
| 002 | Product4 | Sku4 | 400 | 0.5 | 5 | 320 |
| 002 | Product5 | Sku5 | 500 | 0.5 | 50 | 320 |
| 002 | Product6 | Sku6 | 600 | 0.5 | 0.5 | 320 |
| 002 | Product7 | Sku7 | 700 | 0.0 | 10 | 320 |
| 002 | Product8 | Sku8 | 800 | 1.5 | 0 | 320 |
| 002 | Product9 | Sku9 | 900 | 2 | 2 | 320 |
| 002 | Product10 | Sku10 | 1000 | 3 | 30 | 320 |
+---------+-----------+-------+-----------+------------+-----------------+--------+
我想要的输出
+---------+-----------+-------+-----------+------------+-----------------+--------+
| Orderid | name | Sku | row_total | tax_amount | discount_amount | mowner |
+---------+-----------+-------+-----------+------------+-----------------+--------+
| 002 | Product1 | Sku1 | 100 | 0.5 | 1.5 | 320 |
| 002 | Product2 | Sku2 | 200 | 0.5 | 1 | 95 |
| 002 | Product3 | Sku3 | 300 | 0.5 | 0 | 95 |
| 002 | Product4 | Sku4 | 400 | 0.5 | 5 | 100 |
| 002 | Product5 | Sku5 | 500 | 0.5 | 50 | 106 |
| 002 | Product6 | Sku6 | 600 | 0.5 | 0.5 | 504 |
| 002 | Product7 | Sku7 | 700 | 0.0 | 10 | 112 |
| 002 | Product8 | Sku8 | 800 | 1.5 | 0 | 95 |
| 002 | Product9 | Sku9 | 900 | 2 | 2 | 99 |
| 002 | Product10 | Sku10 | 1000 | 3 | 30 | 11 |
+---------+-----------+-------+-----------+------------+-----------------+--------+
问题
这里的主要问题是 mowner
列。它会不断重复每个项目,直到所有 mowner
完成。有人可以查看它并尝试帮助我获得我在这个问题中显示的期望结果。
OK!,这花了一些时间,但如果你仍然想要两个 tables,(你可以只添加行 mowner 和 mrealorder 到 table 1)你需要添加一行,在此 fiddle 您可以执行两个查询并查看结果,您当前的查询是:
SELECT DISTINCT o.Orderid, o.name, o.Sku, o.row_total, o.tax_amount, o.discount_amount, m.mowner
FROM table1 o
JOIN table2 m ON ( o.Orderid = m.Morderid )
我稍微修改了一下
SELECT DISTINCT o.Orderid, o.name, o.Sku, o.row_total, o.tax_amount, o.discount_amount, m.mowner
FROM table1 o
JOIN table2 m ON ( o.Orderid = m.Morderid and o.name = m.Mname)
你可以在这个 fiddle http://sqlfiddle.com/#!9/73bde/3
中看到整个例子
由于 mowner 结果与您不同 "desire" 您需要解释如何获得该值,当您这样做时,我很乐意修改我当前的答案以添加该值。
问候..
我有 2 个 table 想合并在一起。第二个 table 很棘手,我会尽力在这里解释一下
以下 table 个有问题:
1) table1
2) table2
表 1
+---------+-----------+-------+-----------+------------+-----------------+
| Orderid | name | Sku | row_total | tax_amount | discount_amount |
+---------+-----------+-------+-----------+------------+-----------------+
| 002 | Product1 | Sku1 | 100 | 0.5 | 1.5 |
| 002 | Product2 | Sku2 | 200 | 0.5 | 1 |
| 002 | Product3 | Sku3 | 300 | 0.5 | 0 |
| 002 | Product4 | Sku4 | 400 | 0.5 | 5 |
| 002 | Product5 | Sku5 | 500 | 0.5 | 50 |
| 002 | Product6 | Sku6 | 600 | 0.5 | 0.5 |
| 002 | Product7 | Sku7 | 700 | 0.0 | 10 |
| 002 | Product8 | Sku8 | 800 | 1.5 | 0 |
| 002 | Product9 | Sku9 | 900 | 2 | 2 |
| 002 | Product10 | Sku10 | 1000 | 3 | 30 |
+---------+-----------+-------+-----------+------------+-----------------+
表 2
+----------+--------+------------+
| MOrderid | mowner | mrealorder |
+----------+--------+------------+
| 002 | 95 | 3333333 |
| 002 | 100 | 3333333 |
| 002 | 320 | 3333333 |
| 002 | 95 | 3333333 |
| 002 | 504 | 3333333 |
| 002 | 112 | 3333333 |
| 002 | 95 | 3333333 |
| 002 | 99 | 3333333 |
| 002 | 106 | 3333333 |
| 002 | 11 | 3333333 |
+----------+--------+------------+
这是我为获得所需输出而编写的查询,我已尝试显示我正在寻找的最终结果。
SELECT DISTINCT o.Orderid, o.name, o.Sku, o.row_total, o.tax_amount, o.discount_amount, m.mowner
FROM table1 o
JOIN table2 m ON ( o.Orderid = m.Morderid )
这是我在运行之后得到的结果
+---------+-----------+-------+-----------+------------+-----------------+--------+
| Orderid | name | Sku | row_total | tax_amount | discount_amount | mowner |
+---------+-----------+-------+-----------+------------+-----------------+--------+
| 002 | Product1 | Sku1 | 100 | 0.5 | 1.5 | 95 |
| 002 | Product2 | Sku2 | 200 | 0.5 | 1 | 95 |
| 002 | Product3 | Sku3 | 300 | 0.5 | 0 | 95 |
| 002 | Product4 | Sku4 | 400 | 0.5 | 5 | 95 |
| 002 | Product5 | Sku5 | 500 | 0.5 | 50 | 95 |
| 002 | Product6 | Sku6 | 600 | 0.5 | 0.5 | 95 |
| 002 | Product7 | Sku7 | 700 | 0.0 | 10 | 95 |
| 002 | Product8 | Sku8 | 800 | 1.5 | 0 | 95 |
| 002 | Product9 | Sku9 | 900 | 2 | 2 | 95 |
| 002 | Product10 | Sku10 | 1000 | 3 | 30 | 95 |
| 002 | Product1 | Sku1 | 100 | 0.5 | 1.5 | 100 |
| 002 | Product2 | Sku2 | 200 | 0.5 | 1 | 100 |
| 002 | Product3 | Sku3 | 300 | 0.5 | 0 | 100 |
| 002 | Product4 | Sku4 | 400 | 0.5 | 5 | 100 |
| 002 | Product5 | Sku5 | 500 | 0.5 | 50 | 100 |
| 002 | Product6 | Sku6 | 600 | 0.5 | 0.5 | 100 |
| 002 | Product7 | Sku7 | 700 | 0.0 | 10 | 100 |
| 002 | Product8 | Sku8 | 800 | 1.5 | 0 | 100 |
| 002 | Product9 | Sku9 | 900 | 2 | 2 | 100 |
| 002 | Product10 | Sku10 | 1000 | 3 | 30 | 100 |
| 002 | Product1 | Sku1 | 100 | 0.5 | 1.5 | 320 |
| 002 | Product2 | Sku2 | 200 | 0.5 | 1 | 320 |
| 002 | Product3 | Sku3 | 300 | 0.5 | 0 | 320 |
| 002 | Product4 | Sku4 | 400 | 0.5 | 5 | 320 |
| 002 | Product5 | Sku5 | 500 | 0.5 | 50 | 320 |
| 002 | Product6 | Sku6 | 600 | 0.5 | 0.5 | 320 |
| 002 | Product7 | Sku7 | 700 | 0.0 | 10 | 320 |
| 002 | Product8 | Sku8 | 800 | 1.5 | 0 | 320 |
| 002 | Product9 | Sku9 | 900 | 2 | 2 | 320 |
| 002 | Product10 | Sku10 | 1000 | 3 | 30 | 320 |
+---------+-----------+-------+-----------+------------+-----------------+--------+
我想要的输出
+---------+-----------+-------+-----------+------------+-----------------+--------+
| Orderid | name | Sku | row_total | tax_amount | discount_amount | mowner |
+---------+-----------+-------+-----------+------------+-----------------+--------+
| 002 | Product1 | Sku1 | 100 | 0.5 | 1.5 | 320 |
| 002 | Product2 | Sku2 | 200 | 0.5 | 1 | 95 |
| 002 | Product3 | Sku3 | 300 | 0.5 | 0 | 95 |
| 002 | Product4 | Sku4 | 400 | 0.5 | 5 | 100 |
| 002 | Product5 | Sku5 | 500 | 0.5 | 50 | 106 |
| 002 | Product6 | Sku6 | 600 | 0.5 | 0.5 | 504 |
| 002 | Product7 | Sku7 | 700 | 0.0 | 10 | 112 |
| 002 | Product8 | Sku8 | 800 | 1.5 | 0 | 95 |
| 002 | Product9 | Sku9 | 900 | 2 | 2 | 99 |
| 002 | Product10 | Sku10 | 1000 | 3 | 30 | 11 |
+---------+-----------+-------+-----------+------------+-----------------+--------+
问题
这里的主要问题是 mowner
列。它会不断重复每个项目,直到所有 mowner
完成。有人可以查看它并尝试帮助我获得我在这个问题中显示的期望结果。
OK!,这花了一些时间,但如果你仍然想要两个 tables,(你可以只添加行 mowner 和 mrealorder 到 table 1)你需要添加一行,在此 fiddle 您可以执行两个查询并查看结果,您当前的查询是:
SELECT DISTINCT o.Orderid, o.name, o.Sku, o.row_total, o.tax_amount, o.discount_amount, m.mowner
FROM table1 o
JOIN table2 m ON ( o.Orderid = m.Morderid )
我稍微修改了一下
SELECT DISTINCT o.Orderid, o.name, o.Sku, o.row_total, o.tax_amount, o.discount_amount, m.mowner
FROM table1 o
JOIN table2 m ON ( o.Orderid = m.Morderid and o.name = m.Mname)
你可以在这个 fiddle http://sqlfiddle.com/#!9/73bde/3
中看到整个例子由于 mowner 结果与您不同 "desire" 您需要解释如何获得该值,当您这样做时,我很乐意修改我当前的答案以添加该值。
问候..