更改具有相同值的行的顺序

时间:2017-05-24 10:28:12

标签: php mysql sql virtuemart

我将旧数据库转移到VirtueMart(Joomla Component)的新数据库, 并且在数据库中有一个表格,指示媒体(图像)应该对应的位置(它们指向哪个产品),并且媒体按1,2,3,4等排序.1是主要图像。产品

当我将旧数据库转移到新数据库时,没有像订购那样的字段。

enter image description here

红色块显示订单不正确(1,1,1,1), 绿色块正确显示,我需要找到一种自动化过程的方法,因为数据库中有超过5000个条目。

我想通过PHP自动化这个过程,但我无法弄清楚如果行具有相同的值并更新订单的值,我将如何比较

如果有任何可行的方法,非常感谢你的帮助。

问候。

1 个答案:

答案 0 :(得分:1)

您可以将变量用于此目的:

set @vpi := -1;
set @rn := 0;

update VirtueMart vm
    set ordering = (@rn := if(@vpi = virtualmart_product_id, @rn + 1,
                              if(@vpi := virtualmart_product_id, 1, 1)
                             )
                   )
    order by virtualmart_product_id, id;