考虑到列A,B和C,我有一个具有16个唯一值的表1。
CREATE TABLE `monitor_periodo` (
`ano` varchar(255) DEFAULT 'NULL',
`mes` varchar(255) DEFAULT 'NULL',
`data` varchar(255) DEFAULT 'NULL',
`id_periodo` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id_periodo`),
UNIQUE KEY `UNIQUE` (`ano`,`mes`,`data`)
)
还有一个表,表2具有数百万行,并且具有与表1相同的列结构(
id.periodo
除外),因此表1的16种组合在表2中重复很多,但是我没有列将其与表1链接。我想在表2中插入与表1相同的“匹配项”之后的列
id.periodo
。当然,它不是唯一索引,因为从1到16的数字会重复很多,但是我的意图是是在表2中的主键(以及索引)之后的表2中创建外键。先感谢您,
加布里埃尔
最佳答案
您可以使用以下语句从table2
中的id_periodo
字段更新monitor_periodo
:
UPDATE
table2
LEFT JOIN
monitor_periodo
ON
monitor_periodo.ano = table2.ano
AND
monitor_periodo.mes = table2.mes
AND
monitor_periodo.data = table2.data
SET
table2.id_periodo = monitor_periodo.id_periodo
;
然后,您可以使用以下命令创建外键约束:
ALTER TABLE table2
ADD FOREIGN KEY (id_periodo) REFERENCES monitor_periodo(id_periodo)
;
关于mysql - 在多列匹配的表2中的表1中添加一个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24463159/