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

标签 php mysql sql virtuemart

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

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

enter image description here

红色 block 显示的顺序不正确(1,1,1,1), 并且绿色 block 正确显示它,我需要找到一种方法来自动化该过程,因为数据库中有超过 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;

关于php - 更改具有相同值的行的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44155747/

相关文章:

php - Yii Jquery AJAX 调用未触发

php - 使用 javascript/php 进行动态链接/重定向

php - 每个查询不同的背景图像

php - 将动态创建的span标签中的数据发送到php

javascript - 将 Javascript 正则表达式转换为 PHP

mysql - Laravel 5.0 查询使用带连接的查询构建器

php - Mysql 错误 #1305 FUNCTION db.sys_exec 不存在

javascript - fullcalendar.js - 将 for 循环插入模态

sql - 针对多对一关系优化 SQL 查询

sql - POSTGRESQL 中同一行的两个结果