选择具有变体的行多次存在的位置

时间:2017-08-15 07:29:39

标签: php mysql

这是一个很难设置标题的人,所以我为歧义道歉。

我有以下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

  3. 删除行

    我知道我可能需要将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
    

1 个答案:

答案 0 :(得分:1)

为了检索具有相同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

要修复空值,您需要循环上述结果并搜索null并将其替换为上一个或下一个结果。