MySQL 一次更新(update)多条记录的思路
2022-11-12 09:32:42
内容摘要
这篇文章主要为大家详细介绍了MySQL 一次更新(update)多条记录的思路,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
工作中遇到一个问题
文章正文
这篇文章主要为大家详细介绍了MySQL 一次更新(update)多条记录的思路,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
工作中遇到一个问题:要更新一个数据表。
这个表是我自己创建的,有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 59 60 | <code> 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 ); } ?></code> |
MySQL 一次更新(update)多条记录的思路
注:关于MySQL 一次更新(update)多条记录的思路的内容就先介绍到这里,更多相关文章的可以留意
代码注释