Mysql 基于与另一个表的关系更新列
我有一个Mysql 基于与另一个表的关系更新列,mysql,sql,database,postgresql,Mysql,Sql,Database,Postgresql,我有一个表1,看起来像这样 NameId SelectedName Null A Null C Null F Id Name 1 A 2 B 3 C 4 D 5 E 6 F NameId是一个外键
表1
,看起来像这样
NameId SelectedName
Null A
Null C
Null F
Id Name
1 A
2 B
3 C
4 D
5 E
6 F
NameId
是一个外键
,它引用了表2(Id)
还有一个表2
,看起来像这样
NameId SelectedName
Null A
Null C
Null F
Id Name
1 A
2 B
3 C
4 D
5 E
6 F
我想用与同一名称
相关联的所有Id
编号填充名称Id
,因此,例如,最终结果将是:
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`;
这不管用。不确定如何执行此操作,或者如何使用以前选择的列和关系来完成此处的操作…首先使用
表2.Id
更新表1.NameId
值
UPDATE table1
INNER JOIN table2
ON table1.SelectedName= table2.Name
SET table1.NameId = table2.ID
UPDATE table_1 INNER JOIN table_2 ON table_1.SelectedName= table_2.Name
SET table_1.NameId= table_2.Id
并从表_1
SELECT NameId, SelectedName
FROM table_1
WHERE SelectedName IN (SELECT Name FROM table_2);
首先用
table_2.Id
UPDATE table_1 INNER JOIN table_2 ON table_1.SelectedName= table_2.Name
SET table_1.NameId= table_2.Id
并从表_1
SELECT NameId, SelectedName
FROM table_1
WHERE SelectedName IN (SELECT Name FROM table_2);
您所展示的是MSSQL语法。应该是
更新表1 a内部联接表2 b ON a.SelectedName=b.Name SET a.NameId=b.ID
是的,很抱歉我忘了检查标记。请花点时间格式化您的查询+1。您显示的是MSSQL语法。应该是更新表1 a内部联接表2 b ON a.SelectedName=b.Name SET a.NameId=b.ID
是的,很抱歉我忘了检查标记。请花点时间格式化您的查询+1。