从另外两个表更新第三个表

时间:2015-12-07 21:36:04

标签: mysql sql

我有两张桌子,ID应根据' orderID'匹配。

例如,Table1.ID = 1& orderid 3.应与table2.ID = 2匹配,orderid = 3.

与这2个id的关系存储在table3中,如下所述。

UPDATE table3
SET table1ID, table2ID =(
SELECT table1.1ID, table2.2ID
FROM table1 a
INNER JOIN table2 b
ON a.orderid = b.orderid
)


    Table1            Table2                 Table3
1ID, orderid       2ID, orderid        3ID, table1ID, table2ID
 1      3           1       1           1       1         2
 2      2           2       3           2       2         3
 3      1           3       2           3       3         1

我正在尝试更新表3中的table1ID,其中值为null,但我不确定如何编写查询以便它仍然相应地匹配。

   Table1            Table2                 Table3
1ID, orderid       2ID, orderid        3ID, table1ID, table2ID
 1      3           1       1           1                 2
 2      2           2       3           2                 3
 3      1           3       2           3       3         1

1 个答案:

答案 0 :(得分:0)

这是未经测试的,但我相信它应该可行。

You need to quote columns starting with a number.

  

标识符可以以数字开头,但除非引用可能不仅仅由数字组成。

我们的想法是从table1table2检索匹配的对,然后在table3的条件下相应地更新table3.table1id IS NULL,以便不会覆盖任何值。

UPDATE
  table3 t
  LEFT JOIN (
    select     x.`1ID`, y.`2ID`
    from       table1 x
    inner join table2 y on x.orderid = y.orderid
  ) foo ON t.table2id = foo.`2ID`
SET
  t.table1id = foo.`1ID`
WHERE
  t.table1id IS NULL

附加SQLFiddle。点击here查看其工作原理。