如何使用已存在于另一个表(表的副本)中的数据创建表?
答案 0 :(得分:17)
复制表格最便携的方法是:
根据旧表中的SELECT使用INSERT:
INSERT INTO new_table
SELECT * FROM old_table
在SQL Server中,我使用INTO语法:
SELECT *
INTO new_table
FROM old_table
...因为在SQL Server中,INTO子句创建了一个尚不存在的表。
答案 1 :(得分:14)
如果您使用的是MySQL,则可能需要使用CREATE TABLE ... AS SELECT
语法来创建由另一个结果集的列和数据类型定义的表:
CREATE TABLE new_table AS
SELECT *
FROM old_table;
示例:
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)
对于不支持此语法的其他DBMS,您可能需要查看@OMG Ponies' answer以获得更便携的解决方案。
答案 2 :(得分:4)
对于SQL Server
SELECT *
INTO NewTable
FROM OldTable
答案 3 :(得分:0)
对于Sql server:
从现有表创建新表:
CREATE TABLE new_table_name AS
SELECT [col1,col2,...coln] FROM existing_table_name [WHERE condition];
使用选择命令将值插入现有表格中的另一个现有表格:
SELECT * INTO destination_table FROM source_table [WHERE conditions];
SELECT *
INTO newtable [IN externaldb]
FROM oldtable
[ WHERE condition ];
使用将值插入现有表格中的另一个现有表格 插入命令:
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1,column2, column3, ... FROM table1 [WHERE condition];
答案 4 :(得分:0)
如果你想现有表的确切模式到新表并且想要将现有表的所有值插入到新表中,则执行以下两个查询:
create table new_table_name like Old_table_name;
select * into new_table_name from Old_table_name;
LIKE 仅适用于基表,不适用于视图。
如果原始表是TEMPORARY表,则CREATE TABLE ... LIKE不保留TEMPORARY。要创建TEMPORARY目标表,请使用CREATE TEMPORARY TABLE ... LIKE。