2013-02-27 91 views
1

我有一個數據庫有兩個單獨的表。一個表(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

回答

0

您可以使用下面的查詢來更新。但是,如果您在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

0

您可以將兩個表連接在一起並執行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

相關問題