PHP implementiert das Zusammenfügen von SQL-Anweisungen, um mehrere Felder stapelweise zu aktualisieren

小云云
Freigeben: 2023-03-21 21:18:02
Original
4373 Leute haben es durchsucht

Dieser Artikel stellt Ihnen hauptsächlich die PHP-Implementierung des Zusammenfügens von SQL-Anweisungen zur Stapelaktualisierung mehrerer Felder vor. Ich hoffe, er kann Ihnen helfen.

1. SQL-Anweisung

1. Stapelaktualisierung eines Feldes:

UPDATE `user`
SET `name` = CASE id
WHEN 1 THEN '张三'
WHEN 2 THEN '李思'
WHEN 3 THEN '王五'
END
WHERE id IN (1,2,3)

This Die Bedeutung des SQL-Satzes besteht darin, das Namensfeld der Benutzertabelle zu aktualisieren. Wenn id=1, ist der Wert von name Zhang San . Mehrere Felder stapelweise aktualisieren:

UPDATE `user`                                                                                                                      > WHEN 3 THEN '王五'
END,
age = CASE id
WHEN 1 THEN 16
WHEN 2 THEN 17
WANN 3 DANN 18
ENDE
WHERE id IN (1,2 ,3)

2. Fall
/


Verwandte Empfehlungen:


Vorkompiliertes Verständnis von MySQL-Anweisungen in PHP

/@todo 去除表中电话和传真的 '-'
//表的最小ID是1,最大ID是121329;fax和phone都是varchar类型
//每次查询100条数据,拼接sql语句批量更新
public function updeAction(){
    set_time_limit(0);
    $mGather = new ClientGatherModel();
    //$mGather->setDb('gather');    //读线上gather库[区分线上和线下数据库]
    $cnt = 0;
    $minId = 1;
    $maxId = 121329;
    //每次最多插入100条数据,程序拼接
    for ($x=$minId; $x<=$maxId; $x+=100){
        $littleMax = $x+99;
        $querySql = "select * from crm_client_gather where id>=$x and id <=$littleMax order by id asc";
        $result = $mGather->query($querySql);
        $data = [];
        $sql = "";
        if($result){
            foreach ($result as $k => $v){
                $fax = $v[&#39;fax&#39;] ? $v[&#39;fax&#39;] : &#39;&#39;;
                $phone = $v[&#39;phone&#39;] ? $v[&#39;phone&#39;] : &#39;&#39;;
                $id = $v[&#39;id&#39;];
                    
                if($fax || $phone ){
                    if($fax && strstr($fax, &#39;-&#39;)){
                        $fax = substr($fax,strpos($fax,&#39;-&#39;)+1);    //截取第一个 - 后面的内容
                    }
                    if($phone && strstr($phone, &#39;-&#39;)){
                        $phone = substr($phone,strpos($phone,&#39;-&#39;)+1);    //截取第一个 - 后面的内容
                    }
                }
                    
                $data[] = [&#39;id&#39;=>$id,&#39;fax&#39;=>$fax,&#39;phone&#39;=>$phone];
            }
            if($data){
                $sql .= " UPDATE crm_client_gather SET fax = CASE id ";
                $faxArr = array_column($data, &#39;fax&#39;, &#39;id&#39;);
                foreach ($faxArr as $k => $v){
                    $sql .= " WHEN {$k} THEN &#39;{$v}&#39; ";
                }
                $sql .= " END, ";
                    
                $phoneArr = array_column($data, &#39;phone&#39;,&#39;id&#39;);
                $sql .= " phone = CASE id ";
                foreach ( $phoneArr as $k => $v ){
                    $sql .= " WHEN {$k} THEN &#39;{$v}&#39; ";
                }
                $sql .= &#39; END &#39;;
                    
                $idArr = array_column($data, &#39;id&#39;);
                $sql .= " WHERE id IN ( ";
                foreach ($idArr as $k => $v){
                    if($idArr[count($idArr)-1] == $v ){
                        $sql .= $v;
                    }else{
                        $sql .= $v.&#39;,&#39;;
                    }
                }
                $sql .=")";
                    
                $mGather->query($sql);
                    
                if( $littleMax > $maxId ){
                    $biggerId = $maxId;
                }else{
                    $biggerId = $littleMax;
                }
                echo "ID:[{$x}]-[$biggerId] 更新了 [".count($data)."]条数据 ";//打印进度
            }
        }
    }
}
Nach dem Login kopieren

Beispielfreigabe für eine MySQL-SQL-Anweisungsanmerkungssammlung

Detaillierte Beschreibung Einführung in mehrere SQL-Anweisungen

Das obige ist der detaillierte Inhalt vonPHP implementiert das Zusammenfügen von SQL-Anweisungen, um mehrere Felder stapelweise zu aktualisieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage