0

我有一个名为的表mainlinks,它有大约 600 万行。有一个名为的列url包含来自网络的 url,另外还有两列被称为metaTitle并且metaDesc在大多数行上都是空的。

我有另一个名为的表links1,它有大约 350 万行,列URLUtitlemetaDesc。所有的 URLlinks1也在mainlinks. Links1有几百万个 url,在它们的UtitlemetaDesc列中有标题和 meta:descriptions。我现在正试图让 SQL 来比较这两个表,并在任何地方links1都有 URL 的标题和描述,以将该信息复制metaTitlemetaDesc.mainlinks

我尝试了以下代码:

UPDATE mainlinks
INNER JOIN links1 ON (mainlinks.URL = links1.URL)
SET mainlinks.metaTitle = links1.UTitle, mainlinks.metaDesc = links1.metaDesc

Phpmyadmin 告诉我更新了数百条记录,尽管我知道应该有几百万条记录。只需快速浏览这两个表,例如,两列中都显示“ https://zvelo.comURL,但UtitlemetaDesc列中的值没有被复制到mainlinks. 知道问题可能是什么吗?

蒂亚!

编辑:可能是其中一个 URL 列在另一个没有的实际 url 之后有一些空格,因此它们被视为不同?如果是,我怎么能解决这个问题?

4

2 回答 2

0

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

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

一旦我对两个表中的列执行此操作,一切都同步了!

于 2013-02-27T20:37:15.107 回答
0

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

SET mainlinks.metaTitle = links1.UTitle, mainlinks.metaDesc = links1.metaDesc
WHERE NOT links1.UTitle IS NULL AND NOT links1.metaDesc IS NULL
于 2013-02-26T17:53:58.030 回答