web-dev-qa-db-ja.com

MySQL-2つの既存のテーブルの主キーの結合である新しいテーブルを作成する方法

プライマリID(intではなくvarchar)を除いて、フィールドが異なる2つの既存のテーブルがあります。基本的にこれら2つをマージした、3番目のテーブルを作成します。これにより、特定の主キーに対して、すべてのフィールドが1つのテーブルに含まれるようになります。

これを行うためのbextの方法は何ですか?

どうもありがとう

12
Richard H

特定のプライマリIDの両方のテーブルに1つの行があることが確実な場合、これは機能するはずです。

SELECT
    tablea.field1, tablea.field2, tablea.field3, ... tablea.fieldn, <---- field list
    tableb.field1, tableb.field2, tableb.field3, ... tableb.fieldm  <---- field list
FROM
    tablea, tableb
WHERE
    tablea.primaryID = tableb.primaryID

TableaとtablebのプライマリIDフィールドが実際に必要ない場合は、フィールドリストから除外することをお勧めします(このクエリでは、tablea.primaryID = tableb.primaryID条件のため、両方に同じ値が含まれます)。

構文はVIEWでも比較的似ています。

1
Bandi-T
CREATE TABLE result AS 
  (SELECT first.*, 
          second.f1, 
          second.f2, 
          second.f3 
   FROM   first 
          INNER JOIN second 
                  ON first.id = second.id);

ビューを取得するには、「TABLE」を「VIEW」に置き換える以外は同じようにします。ビューではなくテーブルを使用する場合は、デフォルトでは追加されないため、必ず主キーを追加してください。

29
Max Shawabkeh

MS SQLの場合、これを使用します

SELECT * INTO result 
FROM  table1
INNER JOIN table2
ON table1.id = table2.id
1