gpt4 book ai didi

php - 根据相应行使用递增值进行更新

转载 作者:行者123 更新时间:2023-11-29 14:58:15 28 4
gpt4 key购买 nike

对于你的 PHP 玩弄者来说,这是一个问题。我想使用 PHP 的 plain-ol' mysql_* 函数。

我有以下 MySQL 表:

+-----+-----------------+
| id | thread |
+-----+-----------------+
| 14 | 01/ |
| 14 | 02/ |
| 14 | 03/ |
| 15 | 01/ |
| 22 | 01/ |
| 24 | XXX |
| 24 | XXX |
| 24 | XXX |
| 24 | XXX |
| 32 | XXX |
| 32 | XXX |
+-----+-----------------+

“XXX”值是我创造的。我想将该表更改(更新)为此表:

+-----+-----------------+
| id | thread |
+-----+-----------------+
| 14 | 01/ <- |
| 14 | 02/ |
| 14 | 03/ |
| 15 | 01/ <- |
| 22 | 01/ <- |
| 24 | 01/ <- |
| 24 | 02/ |
| 24 | 03/ |
| 24 | 04/ |
| 32 | 01/ <- |
| 32 | 02/ |
+-----+-----------------+

在“id”字段的每个值上(其中“<-”也是我的制作),“thread”字段值必须将自身重置为“01/”并继续递增,直到找到新的“id”值。

我尝试使用 COUNT(id) 进行查询以某种方式增加。我尝试存储在数组中。我也想到了 mysql_data_seek() 。唉,看来我没能成功。

<小时/>

不过,我的“线程”格式是正确的:

$thread = $i < 10 ? "0$i" : $i;

因此,如果它大于 10,则不会有前导零。但这只是有趣的部分。

<小时/>

如有任何帮助,我们将不胜感激。

谢谢

最佳答案

SET @oldid = 0;
SET @counter = 0;
UPDATE tablename
SET thread = CONCAT(
LPAD(
CAST(IF(id = @oldid,
@counter := @counter + 1, -- same id, increment
@counter := (@oldid := id)/id) -- other id, set to 1
AS UNSIGNED),
2,'0'), -- pad with '0'
'/') -- append '/'
WHERE thread = 'XXX' -- or enumerate the whole thing if need be
ORDER BY id, thread;

它可以直接输入到“plain ol' mysql_query”(连续3个:分别输入SETUPDATE查询,或者忘记SET设置任何东西,我只是讨厌未初始化的变量;)

关于php - 根据相应行使用递增值进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3950676/

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