使用另一个表中的数据创建SQL表

Ren*_*uka 13 sql

如何使用已存在于另一个表(表的副本)中的数据创建表?

OMG*_*ies 19

复制表的最便携方法是:

  1. 使用CREATE TABLE语句创建新表
  2. 使用基于旧表中的SELECT的INSERT:

    INSERT INTO new_table
    SELECT * FROM old_table
    
    Run Code Online (Sandbox Code Playgroud)

在SQL Server中,我使用INTO语法:

SELECT *
    INTO new_table
  FROM old_table
Run Code Online (Sandbox Code Playgroud)

...因为在SQL Server中,INTO子句创建了一个尚不存在的表.


Dan*_*llo 14

如果您使用的是MySQL,则可能需要使用该CREATE TABLE ... AS SELECT语法来创建由另一个结果集的列和数据类型定义的表:

CREATE TABLE new_table AS
SELECT * 
FROM   old_table;
Run Code Online (Sandbox Code Playgroud)

例:

CREATE TABLE old_table (id int, value int);

INSERT INTO old_table VALUES (1, 100), (2, 200), (3, 300), (4, 400);

CREATE TABLE new_table AS
SELECT * 
FROM   old_table;


SELECT * FROM new_table;
+------+-------+
| id   | value |
+------+-------+
|    1 |   100 |
|    2 |   200 |
|    3 |   300 |
|    4 |   400 |
+------+-------+
4 rows in set (0.00 sec)


DESCRIBE new_table;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | YES  |     | NULL    |       |
| value | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.03 sec)
Run Code Online (Sandbox Code Playgroud)

对于不支持此语法的其他DBMS,您可能需要查看@OMG Ponies的答案,以获得更便携的解决方案.

  • @Renuka:如果你喜欢答案,可以考虑使用左边的箭头进行投票.您可以使用绿色V"接受"您最喜欢的答案. (2认同)

Mar*_*ith 5

对于 SQL Server

SELECT * 
INTO NewTable
FROM OldTable
Run Code Online (Sandbox Code Playgroud)