我在mysql中有参与者表。例如,表数据如下
php - 在MySQL PHP中交换记录/行-LMLPHP
例如,有一个错误。点火开关必须在第四个位置。如果我把唐纳德换成ignit,就会变成这样,这是错误的:
php - 在MySQL PHP中交换记录/行-LMLPHP
所以,我要一个一个地交换
引燃->哈利,引燃->杰拉德,引燃->芬奇,引燃->艾玛,引燃->唐纳德,所以它会变成:
一。安迪
2.巴里
三。查理
四。点火器
5个。唐纳德
6.艾玛
7号。时髦的
8个。杰拉德
9号。哈利
10个。约翰
问题是,如果有上千个参与者,我如何交换?一个接一个的交换很麻烦,而且需要很长时间。
Making changes to multiple records based on change of single record with SQL没有回答我的问题。我想要更有效的方法(如果有的话)。

最佳答案

这可能看起来不愉快,但希望它能帮助你。

set @currentorder=9;
set @correctorder=4;
set @participant_id=9;
update participants set participant_order=participant_order+1 where participant_order between @correctorder and @currentorder-1;
update participants set participant_order=@correctorder where participant_id=@participant_id;

关于php - 在MySQL PHP中交换记录/行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42197926/

10-14 05:31