0

次のテーブルがあるとします。

テーブルA

a_name | age | country
Jordan | 5 | Germany
Molly | 6 | Spain
Paris | 7 | France

テーブルB

b_name | age | country
Kyle | 5 | Germany
Bob | 6 | Spain
Bob | 7 | Spain
Stephen | 7 | France
Kyle | 9 | France
Mario | 2 | Mexico

以下を含む tableC を生成できるようにしたい:

id (auto increment primary key) | age | country | country_marker
1 | 5 | Germany | 1
2 | 6 | Spain | 2
3 | 7 | France | 3
4 | 7 | Spain | 2
5 | 8 | France | 3
6 | 9 | France | 3
7 | 2 | Mexico | 4

新しいテーブルの場合:

  • 一意の「年齢、国」のペアのみを取得し、「country_marker」を使用して tableC に配置し、個別の「国」に基づいて増分する一意の番号を自動的に割り当てます

tableC の「country」は、tableA にある国に基づいており、tableB と country_marker は、テーブル内の一意の国を示すシステム生成の識別子にすぎないため、countries テーブルがないことに注意してください。出力 tableC の「ID と国マーカー」の順序は、上記の箇条書きを満たしている限り問題ありません。

私は苦労してMySQLカーソルを使用してこれを作成しようとしましたが、カーソルを使用するよりも高速になるSQLクエリまたはクエリのセットが可能かどうかを知りたいです。

4

1 に答える 1

0

phpmyadmin のようなもので最初にテーブル C を作成することで、これに取り組みます。次に、C に入れたいテーブル A と B から情報を取得するクエリを作成します。次に、phpmyadmin 内で、クエリの結果をローカル マシンの .sql ファイルにエクスポートします。.sql ファイルを開いて INSERT ステートメントに必要な変更を加え、.sql ファイル内のデータをテーブル C にインポートできるようにします。

これは正確には最も効率的な方法ではありませんが、確実に機能する最も技術的でない方法のようです。

于 2013-02-06T14:18:13.843 に答える