我有一个名为mainlinks
的表,它有大约六百万行。有一个名为url
的列,其中包含来自网络的网址,以及另外两个名为metaTitle
和metaDesc
的列,这些列在大多数行中都是空的。
我有另一个名为links1
的表,其中包含大约350万行,其中列URL
,Utitle
和metaDesc
。 links1
中的所有网址也位于mainlinks
中。 Links1
有几百万个网址,其Utitle
和metaDesc
列中包含标题和元数据描述。我现在正在尝试使用SQL来比较这两个表,并且links1
具有URL的标题和描述,将该信息复制到metaTitle
和metaDesc
{ {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”,但URL
和Utitle
列中的值没有显示被复制到metaDesc
。知道问题可能是什么?
TIA!
编辑:可能是其中一个URL列在实际URL后面有一些空格而另一个没有,并且它们因此被视为不同?如果是的话,我怎么能绕过这个?答案 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', '');
一旦我在两个表中的列上执行此操作,所有内容都会同步!