Mysql скопировать значение по условию
Подскажите запрос, есть таблица:
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.
Ответы (1 шт):
Автор решения: ValNik
→ Ссылка
Пример. Сначала, только для проверки, посмотрим как джойнится
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.
И какую апдейтить?
Пример здесь