У меня есть таблица с именем mainlinks
, которая содержит около шести миллионов строк. Существует столбец с именем url
, который содержит URL-адрес из Интернета, и еще два столбца с именем metaTitle
и metaDesc
, которые пусты в большинстве строк.Сравните значения двух таблиц mysql
У меня есть другая таблица, называемая links1
, которая имеет около 3,5 миллионов строк, с колоннами URL
, Utitle
и metaDesc
. Все URL-адреса в links1
также находятся в mainlinks
. Links1
имеет несколько миллионов URL, которые имеют названия и мета: описания в своих столбцах Utitle
и metaDesc
. Теперь я пытаюсь получить SQL для сравнения двух таблиц, и где-либо links1
имеет название и описание для URL-адреса, чтобы скопировать эту информацию в metaTitle
и metaDesc
в mainlinks
.
Я попытался следующий код:
UPDATE mainlinks
INNER JOIN links1 ON (mainlinks.URL = links1.URL)
SET mainlinks.metaTitle = links1.UTitle, mainlinks.metaDesc = links1.metaDesc
PHPMYADMIN сказал мне, что несколько сотен записей были обновлены, хотя я знаю, за то, что она должна быть несколько миллионов. Простое быстрое просмотрение двух таблиц показало, например, «https://zvelo.com» в столбцах URL
, но значения в столбцах Utitle
и metaDesc
не были скопированы до mainlinks
. Любая идея, что может быть проблемой?
TIA!
EDIT: Может быть, может быть, что у одного из столбцов URL есть пробелы после фактического URL-адреса, который у другого нет, и что поэтому они воспринимаются как разные? Если да, как я мог обойти это?
Является ли URL уникальным для обеих таблиц? Может ли быть вероятность того, что избыточный URL-адрес имеет две записи в ссылках1, где у одной записи есть данные для столбцов, а другая запись нет, поэтому в этом случае SQL просто обновляет main пустым .... Вы можете добавить условие, говорящее «где ссылки1. Desc not null' ... так далее ... – bonCodigo
@bonCodigo да, они уникальны ... :-( – Phil
@Phil - Согласно MySql должен иметь функцию 'TRIM', которая заботится как о верхнем, так и в конце пробелов. –