0

mainlinks約600万行のテーブルがあります。urlWebからのURLを保持するという列があり、さらに2つの列がmetaTitleありmetaDesc、ほとんどの行で空です。

と呼ばれる別のテーブルがあります。このテーブルlinks1には、約350万行、列、、URLUtitleありmetaDescます。のすべてのURLlinks1もにありmainlinksます。Links1と列にタイトルとmeta:descriptionsを持つ数百万のURLがUtitleありmetaDescます。私は現在、SQLに2つのテーブルを比較させようとしています。links1また、URLのタイトルと説明がある場合は、その情報をにコピーmetaTitlemetaDescますmainlinks

次のコードを試しました。

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

Phpmyadminは、数百のレコードが更新されたと言っていましたが、数百万のレコードが更新されているはずです。2つのテーブルをすばやく参照すると、たとえば、両方の列に「 https://zvelo.com 」と表示されましたが、と列の値はにコピーされませんでした。問題が何であるかについて何か考えはありますか?URLUtitlemetaDescmainlinks

TIA!

編集:URL列の1つに、他の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 に答える