0

次のように、MySQL テーブルを別のテーブルのコピーとして作成したいと考えています。

CREATE TABLE new_tbl SELECT * FROM orig_tbl;

ねじれは、可能であれば、作成時に別の空の列を追加して、後で入力されるようにしたいということです。

上記のように作成して後で ALTER TABLE を使用できることはわかっていますが、大量のデータを指定すると、ALTER には長い時間がかかると思います (これが間違っている場合は矛盾してください)。私が望むことが可能であれば保存されます。

では、余分なが必要extra_col - varchar(64)だとすると、元のクエリはどうなるでしょうか?

ありがとう。

4

2 に答える 2

7

CREATE TABLE ... SELECTSyntaxの下に記載されているように:

SELECTステートメントの最後に次のステートメントを追加することで、別のテーブルから 1 つのテーブルを作成できますCREATE TABLE

CREATE TABLE new_tbl SELECT * FROM orig_tbl;

MySQL は、 内のすべての要素に対して新しい列を作成しますSELECT

[ deletia ]

ステートメントの列SELECTはテーブルの右側に追加されており、重複していないことに注意してください。

[ deletia ]

から作成されたテーブルCREATE TABLE ... SELECTでは、パーツでのみ名前が付けられた列CREATE TABLEが最初に来ます。両方の部分で、またはその部分でのみ名前が付けられた列は、SELECTその後に続きます。列のデータ型はSELECT、パーツで列を指定することによってもオーバーライドできますCREATE TABLE

したがって:

CREATE TABLE new_tbl (
  extra_col VARCHAR(64)
) SELECT * FROM orig_tbl
于 2012-12-20T13:01:28.073 に答える