查找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.
您可以使用下面的查询来更新。但是,如果您在WHERE
子句中使用URL
和SourceID
列,则表现会更好。
UPDATE `apollo`.`Source`, `apollo`.`Bottom`
SET `Source`.`CaptureInterval` = '12'
WHERE `Bottom`.`URL` = `Source`.`SourceID`
谢谢,它确实有效。从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';
谢谢,它确实有效。从CSV文件导入时,我实际上遇到格式问题。但一切都解决了并且工作。再次感谢! – ev0lution37 2013-02-27 20:15:51
'Source.SourceID'和'Bottom.URL'列是相同类型的? – Slowcoder 2013-02-27 19:27:59
是的,他们都是varchar(32)。 – ev0lution37 2013-02-27 19:30:38