gpt4 book ai didi

php - mysql插入函数

转载 作者:行者123 更新时间:2023-11-29 00:17:32 25 4
gpt4 key购买 nike

我正在使用 MySQL 数据库创建一个简单的 PHP 网页。MYSQL数据库有以下内容:(左图)我只是想知道一种可能的方法来进行一些数据操作以获得下面右侧部分的结果。

 (initial value)                                                 (final result)

ID | MINUS '1'(to "next" ID's) ID | ID |

1 | 0 1 | ------------> 1 |
2 | 1 --> (will minus '1' to ID 3 2 | ------------> 2 |
3 | 0 up to the last) 3-1 = 2 | ------------> 2 |
4 | 0 4-1 = 3 | ------------> 3 |
5 | 1 --> (minus '1' AGAIN to ID 6 5-1 = 4 | ------------> 4 |
6 | 0 up to the last) 6-1 = 5 -1 ---> 4 |
7 | 0 7-1 = 6 -1 ---> 5 |

它只是计算负号的个数,然后将它减去它后面的所有 ID。 ID 2 告诉下一个 ID,即 3 将其自身减去 1 直到最后一个 ID (3-1 , 4-1, 5-1, 6-1, 7-1 ) 但另一个实例出现了。 ID 5 告诉 ID 6 再次减去自己直到最后一个,因此从 ID 6 到最后一个 ID 减去 2。从 6-1、7-1 ---> 6-2、7-2。

我知道这对您来说听起来很容易,但我只是个新手,觉得这件事很难。抱歉让你头疼。希望有人帮忙,谢谢!

我的 DML 是这样的(只是为了说明,这应该是在 php 中,我会转换它,只需在逻辑中帮助我)

for($x=0;$x<num_rows;$x++)
{

if(MINUS = 1){
query(UPDATE table_name SET ID=ID-1 WHERE ID = $x);}
}

诸如此类,我在决策循环方面仍然是个新手。如果您能修复我的循环,我将不胜感激。我是这个社区的新手,恳请您的理解。

最佳答案

您可以使用变量或标准 SQL 在 MySQL 中执行此操作。这是标准的 SQL:

select id, minus,
(id - coalesce((select sum(minus) from table t2 where t2.id < t.id), 0)) as newId
from table t;

这里是变量版本:

select id, minus,
(id - minus + (@value := @value + minus)) as newId
from table t cross join
(select @value = 0) const
order by id

关于php - mysql插入函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22439597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com