2013-02-01 13 views
0

後,我想執行該查詢複製執行

create table newTable as select * from oldTable 

但是之後創建新表的表,這似乎並沒有工作。如何在執行一些查詢後獲取新表格?

+2

哪些DBMS是你使用? – CloudyMarble

+1

「*似乎不起作用*」不是任何* DBMS中的有效錯誤消息。 –

回答

1

我不確定你正在使用什麼DBMS或者你得到了什麼錯誤,所以我會嘗試爲多個系統回答。

如果您正在使用Oracle或PostgreSQL(可能有一些其他系統適用此規則),您的語法似乎是正確的。只要確保你的新表格不存在 - 否則會出錯。在情況下,如果你想插入到現有的表 - 我不認爲情況是,但是 - 你可以嘗試像 -

INSERT INTO newTable SELECT * FROM oldTable 

在另一方面,如果與T-工作SQL(SQL Server),你可以SELECT INTO新表。新表將使用舊錶的模式創建。

你可以在MSDN Library瞭解更多關於INTO子句的信息。

你的代碼應該看起來像 -

SELECT * 
INTO newTable 
FROM oldTable 

而且,指定列名和過濾器也適用同樣的方式 -

SELECT Column1, Column2, Column3, ... 
INTO newTable 
FROM oldTable 
WHERE <Filter Condition> 

無論什麼情況下,你會得到你更多的幫助指定詳細信息。

+0

但是新表不存在於點 – CloudyMarble

+0

@MeNoMore:當然,INTO關鍵字是創建一個新表。如果在newTable存在時運行該查詢,則會引發錯誤。 – Chaithanya

+0

不知道! +1 – CloudyMarble

1

的語法一般是這樣的:

CREATE TABLE new_table 
    AS (SELECT * FROM old_table); 

例如:

CREATE TABLE suppliers 
    AS (SELECT id, address, city, state, zip 
     FROM companies 
     WHERE id > 1000); 

嘗試取出星(*),並添加括號。

閱讀here瞭解更多示例。

+0

圍繞select的括號不是必需的,'*'不會有所作爲。 –

0

至於你說你想執行 後的值到新表複製時是否使用的是光標,讓光標shuld被關閉,然後使用查詢從表2所示

選擇*爲表1運行存儲過程如果你想複製所選colums去

選擇Coloumn1,列2,...到表1從表2

這裏............