1

2 つの mysql テーブルがあります。

表1:

    id  name  type
     1    a    123
     2    b    125

表 2:

    id  text
    1   test1
    2   test2

これらの 2 つのテーブルを 3 つ目のテーブルにマージする必要があります

表 3:

    id name type text

id は自動インクリメント ID です。最初の 2 つのテーブルには、関連のないデータがあります。つまり、テーブル 1 の id=1 の行は、テーブル 2 の id=1 の行とは何の関係もありません。したがって、私は基本的に、テーブル 3 に値を挿入して最終的に次のようになる SQL スクリプトを作成したいと考えています。

表 3:

    id name  type   text
    1   a    123
    2   b    125
    3               test1
    4               test2

古いテーブルと新しいテーブルの ID は一致する必要はありません。テーブルのデータだけが新しいテーブルにある必要があります。私は mysql に非常に慣れていないので、誰かが私を助けてくれれば、それは素晴らしいことです!

ありがとう!

4

2 に答える 2

5

次のような方法で実行できます。

CREATE TABLE Table3 (
  id int auto_increment, 
  name ..., 
  type int, 
  text ...,
  PRIMARY KEY (id)
);

INSERT INTO table3 (name, type, text) 
     SELECT name, type, text FROM (
       SELECT name, type, NULL AS text FROM table1
       UNION ALL
       SELECT NULL as name, NULL as type, text FROM table2) AS t

自動インクリメントでは、再カウントする必要はまったくありませんid

これは、あなたが遊ぶためのSQL Fiddleです。)

私は実際にあなたのスキームの空のスペースが何のためにあるのか理解できず、それがすべてNULLであると想定しました。NULLそうでない場合は、このクエリで任意のデフォルト値に置き換えることができます。

于 2012-09-19T17:06:30.710 に答える
3

Since nothing's related, start with @raina77ow's table, but just use two queries:

INSERT INTO table3 (name, type, text)
SELECT name, type, NULL
from table1;

INSERT INTO table3 (name, type, text)
SELECT NULL, NULL, text
from table2;
于 2012-09-19T17:42:18.293 に答える