考虑到列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/

10-09 12:39