84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
Gehen Sie davon aus, dass die Mitgliedsinformationen aus der Datenbank abgerufen werden. Das Mitglied verfügt über ein Feld namens p Nachdem ich PHP verwendet habe, wie soll das Ende verarbeitet werden? !
先写一个数组存放会员id和修改p值
$vips = array( array( 'id' => 1, 'p' => 1 ), array( 'id' => 2, 'p' => 2 ), ... ); foreach ($vips as $vip) { 执行sql语句 update 会员表 set p = $vip['p'] where id = $vip['id']; }
目前采纳的 @tony_yin 的方案是最基本的方案。在实际应用中要注意在for循环开始前要开启transaction,结束后提交transaction。否则性能低不说,如果在for循环过程中程序出现问题很容易导致只有一部分用户的p值更新了,另一部分却没有更新。
我这里补充另外一个方案:既然是mysql,那么可以使用 INSERT ... ON DUPLICATE KEY UPDATE 的批量更新的方式。示例SQL:
INSERT ... ON DUPLICATE KEY UPDATE
INSERT INTO `user` ( `id`, `p` ) VALUES ( 11111, 1), ( 22222, 2), -- ... ( 99999, 9) ON DUPLICATE KEY UPDATE `id` = VALUES(`id`), `p` = VALUES(`p`);
update 会员表 set p = xxx
查出会员的id,一次修改。数据量大就分批次处理
update table set p = value where uid in(1,2,3)
数据量小的放到循环里也无所谓
具体看你自己的需求
我并没看懂你的问题 以后提问请描述清楚 不然就是个垃圾问题 我觉得你应该是想问捞出一部分会员 一次性统一设置他们的p字段是吧`update table set p = value where uid in(1,2,3)`
后面的where条件根据具体场景自己写
或者你最好把你的问题重新描述下
先写一个数组存放会员id和修改p值
目前采纳的 @tony_yin 的方案是最基本的方案。在实际应用中要注意在for循环开始前要开启transaction,结束后提交transaction。否则性能低不说,如果在for循环过程中程序出现问题很容易导致只有一部分用户的p值更新了,另一部分却没有更新。
我这里补充另外一个方案:既然是mysql,那么可以使用
INSERT ... ON DUPLICATE KEY UPDATE
的批量更新的方式。示例SQL:查出会员的id,一次修改。
数据量大就分批次处理
数据量小的放到循环里也无所谓
具体看你自己的需求
我并没看懂你的问题 以后提问请描述清楚 不然就是个垃圾问题
我觉得你应该是想问捞出一部分会员 一次性统一设置他们的p字段是吧
`
update table set p = value where uid in(1,2,3)
`
后面的where条件根据具体场景自己写
或者你最好把你的问题重新描述下