我有一个表1,其中16个唯一值考虑了A,B和C列。
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`)
)
A有另一个表,表2包含数百万行,并且具有与表1相同的列结构(id.periodo
除外),因此表1中的16种组合在表2中重复了很多,但是我表2中没有id.periodo
列将其与表1链接。
我想在表2中插入与表1相同“匹配”的列id.periodo
。当然它不会是唯一索引,因为从1到16的数字将重复一个很多,但我的目的是在表1中的主键(以及索引)后面的表2中创建外键。
提前谢谢你,
加布里埃尔
答案 0 :(得分:1)
您可以使用以下声明使用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)
;