1

いくつかのテーブルをマージしてデータを統合しようとしていますが、あるテーブルから別のテーブルに列を挿入しようとすると、使用しているクエリは、テーブル内の最後の現在存在するレコードの後に​​レコードを挿入します。列の複製についてはたくさんの質問がありますが、それらはすべて空のテーブルから始まっているようです。

INSERT INTO newTable( newColumn ) SELECT oldColumn FROM oldTable

このクエリを変更して、テーブルの最後ではなく最初に行を挿入するにはどうすればよいですか?

何が起こっているのか(左)と私が何をしたいのか(右)の視覚的表現:

+--------+--------+------------+    +--------+--------+------------+
| ID     | Column |  newColumn |    | ID     | Column |  newColumn |
+--------+--------+------------+    +--------+--------+------------+
| 1      | 12345  |            |    | 1      | 12345  |    12345   |
| 2      | 12345  |            |    | 2      | 12345  |    12345   |
| 3      | 12345  |            |    | 3      | 12345  |    12345   |
| 4      |        |    12345   |    +--------+--------+------------+
| 5      |        |    12345   |
| 6      |        |    12345   |
+--------+--------+------------+
4

1 に答える 1

3

コメントで述べたように、INSERTステートメントではなくUPDATEステートメントが必要です。

UPDATE newTable 
    JOIN oldTable
    ON newTable.id = oldTable.id
SET newcolumn = oldcolumn;

テストされた例はここで見ることができます:http ://sqlfiddle.com/#!2/77724/1

于 2013-02-04T21:38:27.513 に答える