mysql 一次更新(update)多條記錄的思路
工作中遇到一個問題:要更新一個數(shù)據(jù)表。
這個表是我自己創(chuàng)建的,有7個字段,id、name、package等等
創(chuàng)建的時候,因為我把name、package的信息分別存在兩個文本文件中,
所以我就用Insert方法,一次性將所有的name插入數(shù)據(jù)庫中。
name全部導(dǎo)入數(shù)據(jù)庫中了,但是我的package沒有導(dǎo)入,這時我仍然想用insert的方法插入,但是不行。
這時候應(yīng)該利用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);
}
?>
相關(guān)文章
Mysql報錯too many connections的原因及解決方案
這篇文章主要給大家介紹了關(guān)于Mysql報錯too many connections原因及解決方案,文中通過實例代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09
mysql?explain中key_len的含義以及計算方法
通常在優(yōu)化SQL查詢的時候,我們都會使用explain分析SQL執(zhí)行計劃,下面這篇文章主要給大家介紹了關(guān)于mysql?explain中key_len的含義以及計算方法的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03
mysql日志文件General_log和Binlog開啟及詳解
MySQL中的數(shù)據(jù)變化會體現(xiàn)在上面日志中,下面這篇文章主要給大家介紹了關(guān)于mysql日志文件General_log和Binlog開啟及詳解的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
MySQL中CONCAT()函數(shù)拼接出現(xiàn)NULL的問題解決
本文主要介紹了MySQL中CONCAT()函數(shù)拼接出現(xiàn)NULL的問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Linux服務(wù)器中MySQL遠(yuǎn)程連接的開啟方法
今天在Linux服務(wù)器上安裝了msyql數(shù)據(jù)庫,在本地訪問的時候可以訪問,但是我想通過遠(yuǎn)程的方式訪問的時候就不能訪問了,查詢資料后發(fā)現(xiàn),Linux下MySQL默認(rèn)安裝完成后只有本地訪問的權(quán)限,沒有遠(yuǎn)程訪問的權(quán)限,需要你給指定用戶設(shè)置訪問權(quán)限才能遠(yuǎn)程訪問該數(shù)據(jù)庫2017-06-06

