如何更新表但需要从同一个表和另一个表的另一个选择中获取更新值?

时间:2015-06-04 14:54:53

标签: mysql

我有这个问题:

我有tableA和tableB

tableB需要在某个字段中获取tableA的ID。

tableB和tableA有一个公共字段'email'

我试过这个

Update tableB SET tableB.reference = (Select a.id from tableA a, tableB b where a.email = b.email)

不幸的是,当我运行查询时,它说我无法为FROM子句中的更新指定目标'tableB'。

知道如何解决这个问题或运行这样的查询吗?

3 个答案:

答案 0 :(得分:1)

更新tableB SET tableB.id =(从tableA a中选择a.id,tableB b,其中a.email = b.email)

答案 1 :(得分:1)

您应该在更新tableA时尝试更新tableB,并且在您的子选择中也不需要tableB

UPDATE tableB SET reference = (SELECT id FROM tableA WHERE email = tableB.email)

答案 2 :(得分:1)

winrm quickconfig

或另一个:

UPDATE tableA, tableB
SET tableB.id = tableA.id
WHERE tableA.email = tableB.email

您的查询也是可能的,但需要修复它:

UPDATE tableB
INNER JOIN tableA USING (email)
SET tableB.id = tableA.id