この記事では、MySQL が条件に基づいてデータをクエリし、別のテーブルに更新する方法を例を使用して説明します。ご参考までに、詳細は以下の通りです。 元のデータベースには3つのテーブルがあります
ビジネス ロジックの変更により、これらを 1 つのテーブルにマージし、traveltag の目的地情報を travel_way に挿入する必要があります。 まず、すべてのルートに対応する目的地を取得し、ルート ID ごとにグループ化し、目的地を 1 行に結合して、カンマで区切ります。 次のようにコードをコピーします。 SELECT travel_way.id,GROUP_CONCAT(traveltag.content) FROM travel_way LEFT JOIN tagrelation on travel_way.id = tagrelation.travel_id LEFT JOIN traveltag ON tagrelation.tag_id = traveltag.id GROUP BY travel_way.id まず、見つかったデータを新しく作成したテーブルに保存します。 次のようにコードをコピーします。 mid (travelway_id,destination) に INSERT します。SELECT travel_way.id,GROUP_CONCAT(traveltag.content) FROM travel_way LEFT JOIN tagrelation on travel_way.id = tagrelation.travel_id LEFT JOIN traveltag ON tagrelation.tag_id = traveltag.id GROUP BY travel_way.id 次に、mid テーブルのデータを travel_way に更新します。更新であるため、 insert into select from ステートメントは使用できません。 次のようにコードをコピーします。 travel_way,mid を更新し、travel_way.destination = mid.destination を設定します。travel_way.id = mid.travelway_id です。 目的地をカンマ区切りの文字列としてtravel_wayテーブルに正常にインポートしました 使用されるメソッド、group_concatについてお話しましょう
商品から*を選択します。 +------+------+ |id| 価格| +------+------+ |1 | 10| |1 | 20| |1 | 20| |2 | 20| |3 | 200 | |3 | 500 | +------+------+ セット内の 6 行 (0.00 秒) IDでグループ化し、価格フィールドの値をコンマで区切って同じ行に出力します(デフォルト) id でグループ化された商品から id、group_concat(price) を選択します。 +------+--------------------+ | id| group_concat(価格) | +------+--------------------+ |1 | 10,20,20| |2 | 20 | |3 | 200,500| +------+--------------------+ セット内の 3 行 (0.00 秒) ID でグループ化し、価格フィールドを重複なく 1 行にカンマで区切って出力します。 ID 別に商品グループから id、group_concat(distinct price) を選択します。 +------+------------------------------------------+ | id| group_concat(個別の価格) | +------+------------------------------------------+ |1 | 10,20| |2 | 20 | |3 | 200,500 | +------+------------------------------------------+ セット内の 3 行 (0.00 秒) ID でグループ化し、価格フィールドの値を 1 行に出力します。カンマで区切られ、価格の降順で並べ替えられます。 商品グループから id、group_concat(price order by price desc) を id で選択します。 +------+---------------------------------------+ | id| group_concat(価格を価格降順で並べ替え) | +------+---------------------------------------+ |1 | 20,20,10 | |2 | 20| |3 | 500,200| +------+---------------------------------------+ セット内の 3 行 (0.00 秒) insert into select from は db1_name(field1,field2) に挿入し、db2_name から field1,field2 を選択します。 ターゲット db2 が存在している必要があります。テストしてみましょう。次の構造を持つ 2 つのテーブルがあります。 insert_one から * を選択します。 +----+--------+-----+-----+ | ID | 名前 | 年齢 | 性別 | +----+--------+-----+-----+ | 1 | ティエン・シャオシ | 25 | | | 2 | 劉ダニウ | 26 | | | 3 | 鄭大奎 | 28 | | | 4 | 胡二狗 | 30 | | +----+--------+-----+-----+ 4行セット insert_sex から * を選択します。 +----+-----+ | ID | 性別 | +----+-----+ | 1 | 1 | | 2 | 2 | | 3 | 1 | | 4 | 2 | +----+-----+ 4行セット 表2から性別データを探し、表1に挿入します。 insert_one(sex) に insert_sex から sex を選択します。 クエリは正常、4 行が影響を受けました insert_one から * を選択します。 +----+--------+-----+-----+ | ID | 名前 | 年齢 | 性別 | +----+--------+-----+-----+ | 1 | ティエン・シャオシ | 25 | | | 2 | 劉ダニウ | 26 | | | 3 | 鄭大奎 | 28 | | | 4 | 胡二狗 | 30 | | | 5 | | | 1 | | 6 | | | 2 | | 7 | | | 1 | | 8 | | | 2 | +----+--------+-----+-----+ 8行セット 結果は恥ずかしいものです。新しいデータを挿入するのではなく、このテーブルの性別フィールドを更新したいのです。このコマンドは、空のテーブルにデータをインポートする場合にのみ適用できます。そのため、上記の実際のニーズでは、新しいテーブル mid を作成し、update を使用してデータを転送および更新しました。 次のようにコードをコピーします。 tb1、tb2を更新し、tb1.address=tb2.address、where tb1.name=tb2.nameを設定します。 一致条件に従って、表 1 のデータを表 2 のデータに置き換え (更新) します。表 1 と表 2 は関連している必要があります。 insert_one、insert_sex を更新し、insert_one.sex = insert_sex.sex とし、insert_one.id = insert_sex.id とします。 クエリは正常、4 行が影響を受けました insert_one から * を選択します。 +----+--------+-----+-----+ | ID | 名前 | 年齢 | 性別 | +----+--------+-----+-----+ | 1 | ティエン・シャオシ | 25 | 1 | | 2 | 劉ダニウ | 26 | 2 | | 3 | 鄭大奎 | 28 | 1 | | 4 | 胡二狗 | 30 | 2 | | 5 | | | 1 | | 6 | | | 2 | | 7 | | | 1 | | 8 | | | 2 | +----+--------+-----+-----+ 8行セット データは insert_one テーブルの sex フィールドに正常に更新されました。 MySQL 関連のコンテンツに興味のある読者は、次のトピックを確認してください: 「MySQL 共通関数の概要」、「MySQL ログ操作スキルの概要」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキルの概要」、および「MySQL データベース ロック関連スキルの概要」。 この記事が皆様のMySQLデータベース設計に役立つことを願っています。 以下もご興味があるかもしれません:
|
<<: Tomcat セキュリティ仕様 (Tomcat セキュリティ強化と仕様)
>>: プロジェクトを素早く構築するためのvite+vue3.0+ts+element-plusの実装
プロジェクトで発生した不規則な絵画壁のレイアウト問題は、次のように分析されます。 1.img dis...
1. MMMの紹介: MMM は、Multi-Master Replication Manager...
1. Docker 起動時の異常なパフォーマンス: 1. ステータスが繰り返し再起動している場合は、...
目次1. 問題の発見2. プロセスの詳細情報を表示する3. 解決策4. 大法を再開する1. 問題の発...
仕える: # chkconfig --list すべてのシステムサービスを一覧表示する# chkco...
この記事では、例を使用して MySQL カーソルの原理と使用方法を説明します。ご参考までに、詳細は以...
目次1. ランダムなブール値( true / false )を取得する2. 指定された日付が営業日で...
この記事では、bootstrapテーブルの使い方を参考までに紹介します。具体的な内容は次のとおりです...
これは、IP アドレスが制限されている投票 Web サイトの不正行為の手口です。この方法は、投票 W...
目次序文:特定の操作ステップ1: プレハブを準備するステップ2: オブジェクトプールを初期化するステ...
目次1. イベントとは何ですか? 2. イベントの使い方3. バインドタップとキャッチタップの違い4...
現在、ほとんどの CPU は浮動小数点ユニット (FPU) をサポートしています。FPU は、プロセ...
目次序文1. SCPの使用法2. sftpを使用する3. scp と sftp の違いは何ですか?ど...
いわゆるスライディングドアテクノロジーとは、さまざまな長さのテキストに合わせてボックスの背景を自動的...
この記事では、Ubuntu 環境で xdebug をコンパイルしてインストールする方法について説明し...