mySQL: 3 つのテーブルのデータと列から新しいテーブルを作成する
質問:
フィールド last_name、フィールドを含む 3 つの既存のテーブルから選択したデータを結合する新しいテーブルを作成するにはどうすればよいですか?人物、詳細、および分類テーブルから名、電子メール、年齢を取得しますか?
回答:
これを実現するには、3 方向の JOIN を利用できます。
で新しいテーブルを作成する結合:
CREATE TABLE new_table AS SELECT p.*, d.content AS age FROM people AS p JOIN details AS d ON d.person_id = p.id JOIN taxonomy AS t ON t.id = d.detail_id WHERE t.taxonomy = 'age';
このクエリは、last_name、first_name、email、および age 列を含む new_table という名前の新しいテーブルを作成します。詳細テーブルでは、コンテンツ フィールドは年齢情報の保存に使用されます。
既存のテーブルへのデータの挿入:
すでに new_table を作成している場合は、次のクエリを使用してデータを挿入できます:
INSERT INTO new_table (id, last_name, first_name, email, age) SELECT p.id, p.last_name, p.first_name, p.email, d.content AS age FROM people AS p JOIN details AS d ON d.person_id = p.id JOIN taxonomy AS t ON t.id = d.detail_id WHERE t.taxonomy = 'age';
Join for Multiple属性:
他のテーブルから複数の属性 (年齢、性別、身長など) を取得するには、追加の結合を実行する必要があります:
CREATE TABLE new_table AS SELECT p.*, d1.content AS age, d2.content AS gender, d3.content AS height FROM people AS p JOIN details AS d1 ON d1.person_id = p.id AND d1.taxonomy_id = (SELECT id FROM taxonomy WHERE taxonomy = 'age') JOIN details AS d2 ON d2.person_id = p.id AND d2.taxonomy_id = (SELECT id FROM taxonomy WHERE taxonomy = 'gender') JOIN details AS d3 ON d3.person_id = p.id AND d3.taxonomy_id = (SELECT id FROM taxonomy WHERE taxonomy = 'height');
以上が3 つの MySQL テーブルのデータを新しいテーブルに結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。