视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
mysql一次更新(update)多条记录的思路
2020-11-09 21:02:22 责编:小采
文档

工作中遇到一个问题:要更新一个数据表。

这个表是我自己创建的,有7个字段,id、name、package等等

创建的时候,因为我把name、package的信息分别存在两个文本文件中,

所以我就用Insert方法,一次性将所有的name插入数据库中。

name全部导入数据库中了,但是我的package没有导入,这时我仍然想用insert的方法插入,但是不行。

这时候应该利用update的方法。一次更新多条信息的思路如下:

UPDATE 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 successfully\n"; 
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 "\r\ninsert into talbe ",$table," ",$i,"times;\r\n"; 
echo "Total time $t seconds.\r\n"; 
//function calculate time ,return a float number 
function microtime_float(){ 
list($usec, $sec) = explode(" ", microtime()); 
return ((float)$usec + (float)$sec); 
} 
?>

您可能感兴趣的文章:

  • mysql 批量更新与批量更新多条记录的不同值实现方法
  • MySQL UPDATE更新语句精解
  • MySql中使用INSERT INTO语句更新多条数据的例子
  • mysql 记录不存在时插入 记录存在则更新的实现方法
  • mysql 存在该记录则更新,不存在则插入记录的sql
  • mysql用一个表更新另一个表的方法
  • MySQL使用外键实现级联删除与更新的方法
  • MySQL查询结果复制到新表的方法(更新、插入)
  • 基于更新SQL语句理解MySQL锁定详解
  • 下载本文
    显示全文
    专题