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

Alter order for rows with same values

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

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

红色块显示顺序不正确(1,1,1,1), 并且绿色块正确显示了它,我需要找出一种方法来自动化该过程,因为数据库中有超过 5000 个条目。

我想通过 PHP 使流程自动化,但我不知道如何比较行是否具有相同的值并更新订单的值

如果有任何可行的方法,将不胜感激。

此致。

您可以为此目的使用变量:

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;