通常、フィールド値を更新するには次の SQL ステートメントを使用します。 mytable を更新し、myfield='value' を設定し、other_field='other_value' を設定します。 しかし、複数行のデータを更新したい場合、各行のフィールド値が異なる場合はどうすればよいでしょうか?最初は、次の Python プログラム例のように、ループを使用して複数の UPDATE ステートメントを実行することを考えるかもしれません。 xrange(10)内のxの場合: sql = ''' UPDATE mytable SET myfield='value' WHERE other_field='other_value'; ''' この方法には何の問題もなく、コードもシンプルでわかりやすいのですが、ループ文の中で複数の SQL クエリが実行されます。システムを最適化するときは、常にデータベース クエリの数をできるだけ減らして、リソースの使用量を減らし、システム速度を向上させたいものです。幸いなことに、もっと良い解決策があります。SQL ステートメントは少し複雑ですが、実行する必要があるのは 1 つのクエリだけです。構文は次のとおりです。 mytable を更新 SET myfield = CASE other_field 1 の場合、「値」 WHEN 2 THEN '値' 3 の場合、「値」 終わり id が (1,2,3) にある場合 この SQL 文は理解しやすいです。多くのプログラミング言語で一般的なキーワード CASE を使用して、id フィールドの値に基づいてさまざまなブランチの型判定を実行します。 複数のフィールドを連続して更新する必要がある場合は、次の SQL ステートメントを使用できます。 カテゴリーの更新 SET display_order = ケースid 1のとき3 2のとき4 3のとき5 終わり、 タイトル = ケースID 1 の場合、「新しいタイトル 1」 2 なら「新タイトル2」 3 なら「新タイトル3」 終わり id が (1,2,3) にある場合 上記の方式により、データベース クエリ操作の数が大幅に削減され、システム リソースが大幅に節約されます。 ただし、これには欠点があります。注意が必要なのは、SQL 文の長さです。プログラム実行環境でサポートされている文字列の長さを考慮する必要があります。もちろん、これは MySQL 設定を更新することで拡張することもできます。 もちろん、Python のような強力な言語は、データの挿入だけでなく、データを更新できる executemany のような強力なメソッドも提供しています。頻繁に何かを行う人にとっては、結果を比較するためにこれらのものを頻繁に使用する必要があります。 update_sql = ''' mayi_order_image を更新 order_city = %s に設定 ここで、user_ip = %s、dt = %s、id = %s user_ip は null ではなく、(order_city は null または order_city = '' ) ''' pp = [] xrange(len(result))内のxの場合: ip = 結果[x][0] id_ = 結果[x][1] 追加 = dbip.lookup(str(ip)) 追加 = add.split('\t') アドレス = str(adds[0]) + ','+str(adds[1] )+ ','+ str(adds[2]) pp.append((アドレス,ip,end,id_)) x%5000 == 0の場合: 保存ログ_many(update_sql、pp) pp = [] 保存ログ_many(update_sql、pp) こちらの方が便利ですか?ただ、速度の問題に関しては、2番目の方法と組み合わせて比較した方が良いと思います。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: CentOS 8.0.1905 は ZABBIX 4.4 バージョンをインストールします (検証済み)
>>: 77.9K の GitHub リポジトリを持つ Axios プロジェクト: 学ぶ価値のあることは何でしょうか?
システムの問題、アプリケーションの速度低下、または原因不明の問題をトラブルシューティングする場合、最...
はじめに使えるかもしれないが、あまり使われていない、シンプルで実用的なDockerコマンドをいくつか...
序文MySQL は、クライアント/サーバー構造に基づく、高速、高性能、マルチスレッドのオープン ソー...
コードをコピーコードは次のとおりです。 <html> <ヘッド> <t...
1 Linuxディストリビューションのバージョンを確認する[root@typecodes ~]# c...
背景:以前、コンテナ内のホストが提供する Redis サービスにアクセスする必要があるプロジェクトを...
問題: JDBCを使用してMySQLデータベースに接続すると、中国語の文字を挿入すると文字化けした文...
Linux ファイルシステム一般的なハードディスクは上図のとおりです。各ディスクは複数のトラックに分...
目次Nginx は 2 つの socket.io サーバーをプロキシします。 socket.ioの動...
XHTMLの img タグは、次のように記述する必要があります: <img alt="...
クリック時に背景色を生成する要素の CSS スタイルに次のコードを追加します。 -webkit-ta...
目次MySQLクラッシュ回復プロセス1. ブラックボックス下のデータフローを更新する2. やり直しロ...
ミックスインは、コンポーネントに分散された再利用可能な機能を柔軟な方法で提供します。 Mixin オ...
usemap は <img> タグの属性であり、使用するイメージ マップの名前を指定する...
構造擬似クラスセレクタの紹介構造擬似クラスセレクターは、いくつかの特殊効果を処理するために使用されま...