Mysql скопировать значение по условию

Рейтинг: 0Ответов: 1Опубликовано: 17.02.2023

Подскажите запрос, есть таблица:

product_id      lang        company_id      name
12345           ru          1               название 1
12345           ru          2               название 2
23345           ru          1               название 3
23345           ru          2               название 4
56567           ru          1               название 5
93990           ru          1               название 6
99992           ru          1               название 7
88289           ru          1               название 8

Нужно скопировать значение столбца name из company_id = 1 в company_id = 2 если product_id company_id 1 равен product_id company_id 2.

Ответы

▲ 0Принят

Пример. Сначала, только для проверки, посмотрим как джойнится

select * from test t1 
inner join test t2 on t2.product_id=t1.product_id and t2.company_id<t1.company_id

Результат на приведенных данных:

product_id lang company_id name product_id lang company_id name
12345 ru 2 название 2 12345 ru 1 название 1
23345 ru 2 название 4 23345 ru 1 название 3

Если все хорошо, делаем Update с тем же условием

update test t1 
inner join test t2 on t2.product_id=t1.product_id and t2.company_id<t1.company_id
  set  t1.name=t2.name;

Проверка t2.company_id<t1.company_id нужна для определенности, поскольку для строки product_id=12345 company_id=1 парой будет product_id=12345 company_id=2,
и для строки
product_id=12345 company_id=2 парой будет product_id=12345 company_id=1.
И какую апдейтить?
Пример здесь