Выберите, где строки существуют более одного раза с вариацией

Трудно поставить название, поэтому я прошу прощения за двусмысленность.

У меня есть следующая таблица MySQL (это таблица Magento):

id    attr_id  store_id   entity_id     value
----+---------+---------+------------+------------------------
1   45      0           173         Sale Gifts + Apartment
2   45      0           175         Sale Outerwear
3   45      1           175         Sale Outerwear
4   45      0           177         (null)
5   45      1           177         New Arrivals
6   45      0           178         New Tops
7   45      1           178         New Tops

Как вы можете видеть, некоторые строки имеют одинаковое все, кроме store_id,

Я хочу сделать следующее:

  1. Если ряд с store_id = 0 имеет дубликат строки, но с store_id = 1 и различные значения (например, строки 4 и 5 выше), обновите строку с store_id = 0 иметь то же значение, что и другие.

  2. Удалить строку с store_id = 1

Я знаю, что для этого мне понадобится комбинация PHP и MySQL. Я просто не знаю, каким будет запрос MySQL.

Любая помощь будет отличной!

РЕДАКТИРОВАТЬ

Конечная цель из приведенной выше таблицы заключается в следующем

id    attr_id  store_id   entity_id     value
----+---------+---------+------------+------------------------
1   45      0           173         Sale Gifts + Apartment
2   45      0           175         Sale Outerwear
4   45      0           177         New Arrivals
6   45      0           178         New Tops

0

Решение

Чтобы получить избыточные значения, имеющие один и тот же entity_id, вы можете сделать:

SELECT
*
FROM
magento m1, magento m2
WHERE
m1.attr_id=m2.attr_id
AND
m1.entity_id=m2.entity_id
AND
m1.id > m2.id

А для исправления нулевых значений вам нужно будет зациклить вышеупомянутые результаты, найти нулевое значение и заменить его предыдущим или следующим результатом.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector