12

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

これはどのように行うことができますか?

4

4 に答える 4

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

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

于 2010-01-21T19:49:08.440 に答える
3

特定のプライマリ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条件により両方に同じ値が含まれます)。

構文は、aについても比較的似てVIEWいます。

于 2010-01-21T19:13:41.837 に答える
0

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

SELECT * INTO result 
FROM  table1
INNER JOIN table2
ON table1.id = table2.id
于 2017-06-21T12:51:44.797 に答える
-3

なぜ新しいテーブルを作成するのですか?データが必要なときはいつでもクエリを実行してみませんか?主キーで2つのテーブルを結合するだけの場合、データアクセス時間の大部分は、データをアプリケーションにマーシャリングするために費やされます。テーブルに参加する前に多くの時間を節約することはなく、多くのスペースを消費することになります。さらに、ソーステーブルを初めて更新するのを待っているだけで、更新スクリプトを実行して変更を結合されたテーブルにコピーするのを忘れて、足の親指を狙っています。重複データはですが、必要な場合もあります。これはその時のようには聞こえません。

于 2010-01-21T20:08:03.787 に答える