根据与另一个表的关系更新列

时间:2018-02-22 05:07:09

标签: mysql sql database postgresql

我有table_1看起来像这样

NameId       SelectedName 
Null              A
Null              C
Null              F

NameIdFOREIGN KEY REFERENCES table_2 (Id)

看起来像这样的table_2

Id              Name 
1                A
2                B
3                C
4                D
5                E
6                F

我想在NameId中填入与Id相关联的所有Name个数字,例如,最终结果将为:

NameId       SelectedName 
1                 A
3                 C
6                 F

到目前为止,我只有:

SELECT Id, `Name` FROM table_2 WHERE `Name` IN (SELECT `SelectedName` FROM table_1);

然后我尝试跟进:

UPDATE table_1 SET NameId = Id WHERE SelectedName = `Name`;

哪个不起作用。不知道如何去做这个或如何使用以前选择的列和关系来获得我想要在这里做的...

3 个答案:

答案 0 :(得分:2)

UPDATE table1
INNER JOIN table2
    ON table1.SelectedName= table2.Name
SET table1.NameId = table2.ID

答案 1 :(得分:0)

UPDATE Table1 a INNER JOIN Table2 b ON a.SelectedName = b.Name SET a.NameId = b.ID

答案 2 :(得分:0)

首先使用table_1.NameId

更新table_2.Id
UPDATE table_1 INNER JOIN table_2 ON table_1.SelectedName= table_2.Name 
SET table_1.NameId= table_2.Id

并从table_1

中检索值
SELECT NameId, SelectedName 
FROM table_1 
WHERE SelectedName IN (SELECT Name FROM table_2);