Вы имели в виду копировать все language_id=1
строки в language_id=2
строки?
Мои знания синтаксиса MySQL очень плохие, поэтому я не осмелюсь дать вам весь код, но, по крайней мере, вам может пригодиться следующий подход:
Создайте временную таблицу со структурой, подобной этой:
product_id int,
name (varchar?)
content (varchar?)
То есть, включите product_id
и все столбцы, которые нужно скопировать.
Заполните временную таблицу данными language_id=1
. Вероятно так:
INSERT INTO temp_table
SELECT product_id, name, content
FROM orig_table
WHERE language_id = 1
Обновите те строки в исходной таблице, где language_id=2
, с соответствующими данными во временной таблице. Это может выглядеть так:
UPDATE orig_table
SET
name = temp_table.name,
content = temp_table.content
FROM temp_table
WHERE orig_table.product_id = temp_table.product_id
AND orig_table.language_id = 2
Вставьте строки из временной таблицы в исходную таблицу, где у продуктов нет language_id=2
. Примерно так:
INSERT INTO orig_table (product_id, language_id, name, content)
SELECT product_id, 2, name, content
FROM temp_table
WHERE NOT EXISTS (
SELECT 1 FROM orig_table
WHERE product_id = temp_table.product.id
AND language_id = 2
)
Если вы не хотели изменять уже существующие данные language_id=2
, то шаг № 3 следует опустить, и вам может потребоваться изменить шаг № 2 таким образом, чтобы он выбирал language_id=1
данные только для продукты, в которых отсутствует language_id=2
.