2010-08-01 61 views
8

如何使用已存在於另一個表(表副本)中的數據創建表?使用另一個表中的數據創建SQL表

+6

什麼RDBMS?沒有一個標準的方法。 – 2010-08-01 16:51:59

+0

我假設你有數據。不確定您是否有權訪問元數據來複製表結構,或者您想從內容樣本中推斷表結構。另外,還沒有定義你使用的數據庫。 – profimedica 2017-07-04 08:31:02

回答

11

如果你正在使用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以獲得更便攜的解決方案。

+0

非常感謝您 – Renuka 2010-08-01 16:55:33

+2

@Renuka:如果您喜歡答案,請考慮使用左側的箭頭進行投票。您可以使用綠色「接受」您最喜歡的答案V. – Andomar 2010-08-01 17:02:53

+1

@DanielVassallo如果源表存在於不同數據庫中,該怎麼辦? 我也問過類似的問題,但用不同的用例 - http://stackoverflow.com/questions/38351206/how-to-create-table-structure-in-rds-similar-to-source-table-in-redshift-and -vic – devsda 2016-07-14 06:32:03

4

對於SQL Server

SELECT * 
INTO NewTable 
FROM OldTable 
+0

如果OldTable出現在不同的數據庫中,該怎麼辦? 可以請你回答這個問題 - http://stackoverflow.com/questions/38351206/how-to-create-table-structure-in-rds-similar-to-source-table-in-redshift-and-vic – devsda 2016-07-14 06:30:52

14

複製表的最輕便的方法是:

  1. 與基於SELECT CREATE TABLE語句
  2. 使用INSERT創建新表來自舊錶:

    INSERT INTO new_table 
    SELECT * FROM old_table 
    

在SQL Server中,我會使用INTO語法:

SELECT * 
    INTO new_table 
    FROM old_table 

...因爲在SQL Server中,INTO子句創建一個不存在的表。

+0

優秀的答案。 – 2012-04-13 14:14:09

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]; 
+0

數據傳輸很好,但我認爲Renuka也需要表結構。 – profimedica 2017-07-04 08:29:01

+0

將現有表的確切架構映射到新表:create table new_table_name like Old_table_name; – 2017-07-07 13:45:07

+0

https://stackoverflow.com/a/44972381/8227002 – 2017-07-07 13:52:41

0

如果u想現存表的新表確切的架構和現有的表的所有值要被插入到新表,然後執行以下兩個查詢:

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。

for more details click here

相關問題