各位用户为了找寻关于mysql 一次更新(update)多条记录的思路的资料费劲了很多周折。这里教程网为您整理了关于mysql 一次更新(update)多条记录的思路的相关资料,仅供查阅,以下为您介绍关于mysql 一次更新(update)多条记录的思路的详细内容
工作中遇到一个问题:要更新一个数据表。
这个表是我自己创建的,有7个字段,id、name、package等等
创建的时候,因为我把name、package的信息分别存在两个文本文件中,
所以我就用Insert方法,一次性将所有的name插入数据库中。
name全部导入数据库中了,但是我的package没有导入,这时我仍然想用insert的方法插入,但是不行。
这时候应该利用update的方法。一次更新多条信息的思路如下:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59UPDATE
table_name
SET
field_name =
CASE
other_field
WHEN
1
THEN
'value'
WHEN
2
THEN
'value'
WHEN
3
THEN
'value'
END
WHERE
id
IN
(1,2,3)
测试代码如下:
<?php
/*
*
function
:
insert
app
's apk ,logo_url, document_title,app_desc,package_name
* into talbe atable use database db .
*/
//connect database catx.
$server='
localhost
';
$user='
root
';
$passwd='
root
';
$port='
3306
';
$dbname='
catx
';
$link=mysql_connect($server,$user,$passwd);
if (!$link) {
die('
Could
not
connect
:
' . mysql_error());
}
else echo "Connected successfullyn";
mysql_select_db("db",$link);
//set init variable and start time
$st=microtime_float();
$table="pydot_g";
$path = "txt";
$fname_package_name = "package_name.txt";
//
$handle= @fopen($path."/".$fname_package_name, "r");
$i=1;
$sql = "UPDATE pydot_g SET package_name = CASE id ";
$ids="";
while(($buf[$i]=fgets($handle,512))!==false){
$sql .= sprintf("WHEN %d THEN '
%s
' ", $i, $buf[$i]); // 拼接SQL语句
$ids .= sprintf("%d,",$i);
$i++;
}
//$ids=implode('
,',$ids);
$ids.=$i;
$sql .=
"END WHERE id IN ($ids)"
;
echo $sql;
mysql_query($sql);
fclose($handle);
mysql_close($link);
//echo the results
and
total
time
used
$et=microtime_float();
$t=$et-$st;
echo
"rninsert into talbe "
,$
table
,
" "
,$i,
"times;rn"
;
echo
"Total time $t seconds.rn"
;
//
function
calculate
time
,
return
a
float
number
function
microtime_float(){
list($usec, $sec) = explode(
" "
, microtime());
return
((
float
)$usec + (
float
)$sec);
}
?>