mysql 一次更新(update)多条记录的思路_Mysql

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

这个表是我自己创建的,有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 update一条记录、mysql update 记录、mysql 优化 思路、mysql update,以便于您获取更多的相关知识。

时间: 2024-09-20 10:29:11

mysql 一次更新(update)多条记录的思路_Mysql的相关文章

MYSQL中获取得最后一条记录的语句_Mysql

在MySQL中,使用auto_increment类型的id字段作为表的主键,并用它作为其他表的外键,形成"主从表结构",这是数据库设计中常见的用法.但是在具体生成id的时候,我们的操作顺序一般是:先在主表中插入记录,然后获得自动生成的id,以它为基础插入从表的记录.这里面有个困难,就是插入主表记录后,如何获得它对应的id.通常的做法,是通过"select max(id) from tablename"的做法,但是显然这种做法需要考虑并发的情况,需要在事务中对主表加以

执行一条sql语句update多条记录实现思路_MsSql

通常情况下,我们会使用以下SQL语句来更新字段值: 复制代码 代码如下: UPDATE mytable SET myfield='value' WHERE other_field='other_value'; 但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?举个例子,我的博客有三个分类目录(免费资源.教程指南.橱窗展示),这些分类目录的信息存储在数据库表categories中,并且设置了显示顺序字段 display_order,每个分类占一行记录.如果我想重新编排这

gridcontrol 自动更新第三条记录“状态”

问题描述 gridcontrol 自动更新第三条记录"状态" 如何遍历得到第三条记录让其自动更新该记录的某一字段 解决方案 http://blog.csdn.net/creathly003/article/details/27310107

数据库 UPDATE多条记录不同值,同时UPDATE多个字段

需求 如下两张表student(学生表).score(测试成绩表) 现需要统计:2015-03-10日之后,性别 age=1 的测试成绩的 总分 与 平均分. 要求:使用一个SQL统计score表,将结果更新到student表的score_sum和score_avg字段中. 结果如图: 实现: 如果我们只需要更新一个字段,MYSQL和ORACLE语法是一样的,在 set 后面跟一个子查询即可,如下: UPDATE student D   SET D.score_sum =        (   

mysql使用GROUP BY分组实现取前N条记录的方法_Mysql

本文实例讲述了mysql使用GROUP BY分组实现取前N条记录的方法.分享给大家供大家参考,具体如下: MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法. 这是测试表(也不知道怎么想的,当时表名直接敲了个aa,汗~~~~): 结果: 方法一: 复制代码 代码如下: SELECT a.id,a.SName,a.ClsNo,a.Score FROM aa a LEFT J

获取MySQL的表中每个userid最后一条记录的方法_Mysql

如下表: CREATE TABLE `t1` ( `userid` int(11) DEFAULT NULL, `atime` datetime DEFAULT NULL, KEY `idx_userid` (`userid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8: CREATE TABLE `t1` ( `userid` int(11) DEFAULT NULL, `atime` datetime DEFAULT NULL, KEY `idx_userid

mysql重复记录取最后一条记录方法

如下表:  代码如下 复制代码 CREATE TABLE `t1` ( `userid` INT(11) DEFAULT NULL, `atime` datetime DEFAULT NULL, KEY `idx_userid` (`userid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8: 数据如下:  代码如下 复制代码 MySQL> SELECT * FROM t1; +--------+---------------------+ | userid |

MySQL查询倒数第二条记录实现方法_Mysql

有时候会用到查询倒数第二条记录 复制代码 代码如下: last=HolderChangeHistory.find_by_sql (["               SELECT * FROM holder_change_histories                   where treasure_id = ?                   order by id desc                     limit   1,1  ",               

mysql快速添加百万条记录的语句_Mysql

使用Insert Select语句插入记录时,必须遵循以下原则.用Select语句选择数据时,不能从被插入数据的表中选择行.指定插入的表后所包含的字段数目必须与Select语句中返回的字段数目相同.指定插入的表后所包含的字段数据类型必须与Select语句中返回的字段数据类型相同或系统可以自动转换.  复制代码 代码如下: INSERT INTO ler_items( classid, title, address, zipcode )SELECT classid, title, address,