#mysql
Вопрос:
Я много читал, прежде чем спрашивать, но так как я новичок в MYSQL, ответы были для меня немного запутанными, поэтому позвольте мне попытаться задать свой собственный вопрос и посмотреть, может ли кто-нибудь помочь.
У меня есть таблица под названием «анализ», и в этой таблице есть данные, которые мне нужно добавить в другую таблицу под названием «обновления».
Хорошо, итак, «обновления» созданы, но теперь я обновил данные из анализа (это источник данных), и обе таблицы имеют уникальный идентификатор под названием «ссылка».
Я планировал запустить «ВСТАВИТЬ В ДУБЛИКАТ», но не знал, как это сделать. Таким образом, в основном поле «ссылка» является уникальным идентификатором, который должен оставаться одинаковым в обеих таблицах, но остальные будут обновляться, например, как цена в таблице «обновления».
Можете ли вы подсказать мне, как это сделать?
Спасибо
Комментарии:
1. так что же я ищу? Может БЫТЬ, ОБНОВИТЬ ДУБЛИКАТ?
2. Я удалил свой первоначальный комментарий, я не полностью прочитал ваш вопрос.
3. Каково
CREATE TABLE
определениеupdates
иparse
?4. Попробуйте ОБНОВИТЬ ДУБЛИКАТ КЛЮЧА, как объяснил @Dai
Ответ №1:
Соответствующее заявление будет иметь такую форму:
INSERT INTO destination (
-- List columns in `destination` here.
)
SELECT
-- List columns from `source` here. Ensure they correspond to the columns listed for `destination` exactly otherwise you'll get an error (or worse: unintentional data corruption).
FROM
source
ON DUPLICATE KEY UPDATE
-- List both `destination` and `source` columns again here, excluding immutable and key columns. Refer to the source column via `VALUES()`.
В вашем случае что-то вроде этого:
INSERT INTO "updates" (
link, /* PK */
a,
b,
c,
d
)
SELECT
link,
a,
b,
c,
d
FROM
"parse"
ON DUPLICATE KEY UPDATE
a = VALUES(a),
b = VALUES(b),
c = VALUES(c),
d = VALUES(d);
Комментарии:
1. Приятно, большое вам спасибо ! Правильно ли это звучит? ВСТАВИТЬ В «обновления» (Продукт, Цена, Ссылка ) ВЫБЕРИТЕ Продукт, Цену, Ссылку ИЗ «разбора» НА ДУБЛИКАТ КЛЮЧА ОБНОВЛЕНИЯ Продукт = ЗНАЧЕНИЯ(Продукт), Цена = ЗНАЧЕНИЯ(Цена);
2. Да, это выглядит прекрасно.