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

lrl1mhuk  于 2022-11-21  发布在  Mysql
关注(0)|答案(4)|浏览(152)

我有一个table_1,看起来像这样

NameId       SelectedName 
Null              A
Null              C
Null              F

是一个
table_2看起来像这样

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

我想用与同一个Name关联的所有Id数字填充NameId,例如,最终结果将是:

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`;

这不起作用。不知道如何进行此操作,也不知道如何使用以前选择的列和关系来完成我想要的操作...

weylhg0b

weylhg0b1#

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

mdfafbf12#

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

nvbavucw3#

首先将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);
iyfjxgzm

iyfjxgzm4#

此方式将在父级更新时更新关系表列

DROP TRIGGER `table_2_au`;
DELIMITER ;;
CREATE TRIGGER `table_2_au` AFTER UPDATE ON `table_2` FOR EACH ROW
UPDATE `table_1` T1
INNER JOIN `table_2` T2
ON T1.`SelectedName` = T2.`Name` 
SET T1.`NameId` = T2.`Id`;;
DELIMITER ;

相关问题