Слияние двух записей одной таблицы (MySQL)

258
19 сентября 2017, 07:18

Для простоты упростим реальную таблицу до двух полей, id и summa

----+----------
id  !   summa
----+----------
1   ! 5
----+----------
3   ! 7 
----+----------
4   ! 9
----+----------
5   ! 3
----+----------
6   ! 7
----+----------

Необходимо слить две определенные записи в одну, например с id = 5 добавить сумму к id = 3, затем запись с id = 5 удалить. Что-то типа

UPDATE table   
SET summa = (SELECT SUM(summa) FROM table WHERE id = 3 or id = 5) WHERE id = 3; 
DELETE FROM table WHERE id = 5;

Алиасы не помогают, подходящего примера не нашел.

Answer 1

Как и указал Mike. Разве что следует еще позаботиться об целостности данных. Мало ли что случится. В запрос попадет ошибочный ID записи, например.

mysql_query
("
Update tbl as a, tbl as b
set a.sum = a.sum + b.sum, b.sum = 0, b.remove_flag = 1
where a.id=3 and b.id=5;
Delete from tbl where remove_flag and ID=5
");

Так запись с ID=5 будет удалена только в том случае, если её значение было успешно прибавлено к записи ID=3

READ ALSO
Как объединить таблицы в Yii2?

Как объединить таблицы в Yii2?

Смотрите какая проблема есть сущности, например категория, город, страна

253
Проблема с Битриксом после переноса

Проблема с Битриксом после переноса

Перенёс битрикс с хостинга на хостинга, сайт функционирует нормально, но не проходит проверка mysql,вот что в логе:

188
Связь один ко многим mysql

Связь один ко многим mysql

Есть 2 таблицы в mysqlСвязь один ко многим(Один продукт у него несколько описаний)

349