比较两个mysql表的值

时间:2013-02-26 17:40:31

标签: mysql sql phpmyadmin

我有一个名为mainlinks的表,它有大约六百万行。有一个名为url的列,其中包含来自网络的网址,以及另外两个名为metaTitlemetaDesc的列,这些列在大多数行中都是空的。

我有另一个名为links1的表,其中包含大约350万行,其中列URLUtitlemetaDesclinks1中的所有网址也位于mainlinks中。 Links1有几百万个网址,其UtitlemetaDesc列中包含标题和元数据描述。我现在正在尝试使用SQL来比较这两个表,并且links1具有URL的标题和描述,将该信息复制到metaTitlemetaDesc { {1}}。

我尝试了以下代码:

mainlinks

Phpmyadmin告诉我,有数百条记录被更新,虽然我知道它应该是几百万。只是快速浏览两个表格,例如,UPDATE mainlinks INNER JOIN links1 ON (mainlinks.URL = links1.URL) SET mainlinks.metaTitle = links1.UTitle, mainlinks.metaDesc = links1.metaDesc 列中的“https://zvelo.com”,但URLUtitle列中的值没有显示被复制到metaDesc。知道问题可能是什么?

TIA!

编辑:可能是其中一个URL列在实际URL后面有一些空格而另一个没有,并且它们因此被视为不同?如果是的话,我怎么能绕过这个?

2 个答案:

答案 0 :(得分:0)

根据我的评论尝试验证空列值...

SET mainlinks.metaTitle = links1.UTitle, mainlinks.metaDesc = links1.metaDesc
WHERE NOT links1.UTitle IS NULL AND NOT links1.metaDesc IS NULL

答案 1 :(得分:0)

在这种情况下,答案是删除所有列中的任何换行符,制表符等。我用了

UPDATE table SET column = REPLACE(REPLACE(REPLACE(column, '\r', ''), '\n', ''), '\t', '');

一旦我在两个表中的列上执行此操作,所有内容都会同步!