Как обновить таблицу MySQL информацией из другой таблицы без повторов? - PullRequest
1 голос
/ 06 мая 2020

Я не очень хорошо знаком с MySQL, так что простите меня, если это глупый вопрос. У меня есть 2 таблицы: content и category.

content имеет множество столбцов с информацией, но меня интересует столбец категории.

category в основном это только столбец категории из первой таблицы.

Теперь content может быть любым, даже повторяться. Я хочу, чтобы category было одним из каждого, без повторов. Таким образом, если что-то новое добавляется в content, оно добавляется в category, иначе ничего не делать. Прямо сейчас content имеет много строк, а category пусто.

Как лучше всего выполнить go через все content на этот раз и добавить по одной из каждой к category?

А если можно; обновить category по мере внесения новых записей в content (проверка, существует ли он уже, и если не добавить)?

MySQL версия: 5.7.28 версия phpMyAdmin: 4.9.2

1 Ответ

0 голосов
/ 06 мая 2020

Есть несколько способов, возможно, используя только sql, как указано здесь (https://www.w3schools.com/sql/sql_insert_into_select.asp):

INSERT INTO category (column1, column2, column3, ...)
SELECT content.category
FROM content
WHERE condition;

Из-за того, что мы не знаем структура второй колонки Я не знаю, чем вам помочь. Возможно, вы также можете сделать что-то вроде:

SELECT category FROM content

сопоставить данные, чтобы они поместились в новую таблицу e отфильтруйте дубликаты e тогда:

INSERT INTO category VALUE(?,?,?,..)

Некоторые работы лучше, если они будут выполнены в backend вместо того, чтобы переносить logi c в db

То же самое для категории обновления , поскольку новые записи вносятся в контент : вставьте данные в таблицу категорий после того, как вы сделаете это в контент table, и только если все в порядке, поместите его в таблицу категорий.

Не используйте макрос или какие-либо плагины, не автоматизируйте его в месте, где вы не совсем уверены, что можете проверить вещи, если что-то происходит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...