2015-06-04 37 views
0

我有这样的问题:如何更新表格,但需要从另一个同一表格和另一个表格中选择更新值?

我有表A和tableB的

tableB的需要得到表A的ID在某一个领域。

tableB的并表A有一个共同的领域“电子邮件”

伊夫试图用这种

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

不幸的是,当我运行查询它说,我不能为FROM子句的更新中指定目标“tableB的” 。

任何想法如何解决这个问题或运行这样的查询?

回答

1
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 

您的查询也有可能,但需要解决它:

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

第一个选项工作非常流畅,没有做出选择来获得值 – jpganz18

1

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

+0

你好,是表A的一个我需要更新,伊夫也糊涂了与现场更新,是“tableA.reference ' – jpganz18

1

你试图更新tableA时,你应该更新tableB,而且你不需要在tableB你的子选择:

UPDATE tableB SET reference = (SELECT id FROM tableA WHERE email = tableB.email) 
相关问题