tableoneこれらの2つのmysqlテーブルをマージするには?
a |b| c
--------
a1 | |c1
a2 | |c2
a3 | |c3
tabletwo
a | b
-----
a1|b1
a2|b2
a3|b3
a4|b4
a5|b5
だから私は2台を持っていると私はそれらをマージしたい
a | b | c
a1| b1|c1
a2| b2|c2
a3| b3|c3
a4| b4|
a5| b5|
を吸収合併。私はphpmyadminの中で、これらの二つのオプションを試みた:
INSERT IGNORE INTO tableone SELECT * FROM tabletwo;
REPLACE INTO tableone SELECT * FROM tabletwo;
しかし、両方が(別の一つのテーブルを置く)同じことを行うのが、私はそれらをマージしたいです。どのようなクエリを使用しなければならないのですか?
INSERT IGNORE INTO tableone (a) SELECT a FROM tabletwo;
UPDATE tableone, tabletwo
SET tableone.b = tabletwo.b
WHERE tableone.a = tabletwo.a;
をPSTに答えるために、このような何かを、tableone
はb
列を持っていないと仮定:私は
+からその欠落エントリのNULL列を取得し、取得します1ポスターが最終的に 'tableone 'をどのように変更するかを尋ねているので。しかし、もし結果が 'tableone'と同じスキーマを持つ(おそらく空の)3番目のテーブルに入るべきなら、これはどのようにして行うことができますか? –
#1104 - SELECTはMAX_JOIN_SIZE個以上の行を調べます。あなたのWHEREを確認し、SET SQL_BIG_SELECTS = 1またはSET SQL_MAX_JOIN_SIZE = SELECTを使用してください。SELECTが大丈夫ですが、これは理解できません。 – faq
テーブルが本当に大きく、MySQLがクエリの実行を拒否しています。 SET SQL_BIG_SELECTS = 1はそのメッセージの重要なビットです。 – cdhowie