Php SQL |使用一个查询更新多行
我有一个方法,其中大约20行必须更改。我给每个ajax传递一个字符串,如“14-33-61-10…”,用于保存某些行的顺序。 以下是我的实际(工作)代码: 我的问题是,大约需要1秒。Php SQL |使用一个查询更新多行,php,sql,sqlite,sql-update,Php,Sql,Sqlite,Sql Update,我有一个方法,其中大约20行必须更改。我给每个ajax传递一个字符串,如“14-33-61-10…”,用于保存某些行的顺序。 以下是我的实际(工作)代码: 我的问题是,大约需要1秒。 我的问题:有没有一种方法可以通过一个查询编辑多行?当然,发送一个SQL字符串,如: update tasks set pos = case rowid when 13 then 1 when 33 then 2 when 61 then 3
我的问题:有没有一种方法可以通过一个查询编辑多行?当然,发送一个SQL字符串,如:
update tasks
set pos =
case rowid
when 13 then 1
when 33 then 2
when 61 then 3
when 10 then 4
end
where rowid in (13,33,61,10)
从
13-33-61-10
到(13,33,61,10)
的转换最好在PHP中完成。如果范围较短,那么我们可以在(ids)参数中使用ID
$explode = explode('--',$_POST['data']); // -> array('0'=>'8', '1'=>'4', ... )
$i = 1;
$sql = "";
foreach($explode as $task)
{
if(!is_int($task)) continue;
$sql .= "UPDATE tasks SET pos=$i WHERE rowid=$task;";
$i++;
}
$project->exec($sql);
UPDATE `profile` SET `app_status`=3 WHERE `id` IN (3,37,95,136,1087,1795,1817)
如果它很长并且我们知道这个范围,让我们使用BETWEEN-value-and-value参数
UPDATE `profile` SET `app_status`=3 WHERE `id` BETWEEN 3904 AND 3918
查看此
http://stackoverflow.com/questions/9346755/update-multiple-rows-in-1-column-in-mysql
@mr_应用程序基于代码“set_pos=$i”已经是增量的。。尝试将update语句放在“i++”之后,好的一点是,SQL代码段已更新。您还可以一次性发送多个update语句update。。。;更新。。。;更新代码>谢谢。我尝试了“更新…”,更新…”和您的解决方案。你的一个要快3倍。太棒了,我从来不知道你可以在一个语句中完成更新。很不错的。
UPDATE `profile` SET `app_status`=3 WHERE `id` BETWEEN 3904 AND 3918