在表2中的表1中添加一个值,其中多列匹配

时间:2014-06-28 02:58:45

标签: mysql database

我有一个表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中创建外键。

提前谢谢你,

加布里埃尔

1 个答案:

答案 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)
;