查找2个表中的匹配项,更改其他字段?

问题描述:

我有一个数据库有两个单独的表。一个表(T1)在其唯一列中具有400多个值,而另一个(T2)具有14,000多行和多个列。查找2个表中的匹配项,更改其他字段?

我需要做的是将T1中的列与T2中的一列进行比较。对于每个匹配值,我需要在T2中更新同一行中的不同值。

我知道这很简单直接,但我是新来的MySQL,并试图在我回到其他事情之前解决这个问题。提前感谢!

编辑:这是我一直在努力都无济于事..

UPDATE `apollo`.`Source`, `apollo`.`Bottom` 
SET `Source`.`CaptureInterval` = '12' 
WHERE `Bottom`.`URL` LIKE `Source`.`SourceID` 

编辑2:

小澄清:

apollo.Bottom和apollo.Source是两个表。

apollo.Bottom是包含一列和400列记录的表格。

我想比较Bottom.URL Source.SourceID。如果它们匹配,我想将Source.CaptureInterval更新为12.

+0

'Source.SourceID'和'Bottom.URL'列是相同类型的? – Slowcoder 2013-02-27 19:27:59

+0

是的,他们都是varchar(32)。 – ev0lution37 2013-02-27 19:30:38

您可以使用下面的查询来更新。但是,如果您在WHERE子句中使用URLSourceID列,则表现会更好。

UPDATE `apollo`.`Source`, `apollo`.`Bottom` 
SET `Source`.`CaptureInterval` = '12' 
WHERE `Bottom`.`URL` = `Source`.`SourceID` 
+0

谢谢,它确实有效。从CSV文件导入时,我实际上遇到格式问题。但一切都解决了并且工作。再次感谢! – ev0lution37 2013-02-27 20:04:13

您可以将两个表连接在一起并执行multiple table update

开始是这样的:

UPDATE `apollo`.`Source` 
    INNER JOIN `apollo`.`Bottom` ON `apollo`.`Bottom`.`URL` = `apollo`.`Source`.`SourceID` 
SET `apollo`.`Source`.`CaptureInterval` = '12'; 
+0

谢谢,它确实有效。从CSV文件导入时,我实际上遇到格式问题。但一切都解决了并且工作。再次感谢! – ev0lution37 2013-02-27 20:15:51