我有两张桌子,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
答案 0 :(得分:0)
这是未经测试的,但我相信它应该可行。
You need to quote columns starting with a number.
标识符可以以数字开头,但除非引用可能不仅仅由数字组成。
我们的想法是从table1
和table2
检索匹配的对,然后在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查看其工作原理。