2013-05-09 163 views
0

我試圖用ALTER TABLE創建列,然後是INSERT INTO。這種作品,除了每個後續專欄之外,都是在前一專欄結束之後開始的。我想這是如何插入作品,所以有一個解決方法或另一個查詢,我可以建立?將一列中的列複製到另一個表中

我一直在嘗試更新,但沒有解決。 作爲參考,這些是我使用的alter/insert查詢。

SQL = "ALTER TABLE [results] ADD COLUMN [" & fld.Name & "_result] TEXT(25)" 
db.Execute SQL 
SQL = "INSERT INTO [results] ([" & fld.Name & "_result]) SELECT [Result] As 
    [" & fld.Name & "_result] FROM [newtable]" 
db.Execute SQL 
+0

[我應該把標籤在我的問題標題(http://meta.stackexchange.com/questions/19190/should-questions-include-tags -in-他們-標題)。不,你不應該。 – phadaphunk 2013-05-09 18:53:05

+1

真正的問題是什麼? (你正在描述一個不起作用的「解決方案」,你應該描述一下真正的問題) – 2013-05-09 18:55:20

+0

我提到過......在上一列結束後,開始添加的列中的數據開始。我希望他們全部從頂部開始 – gta0004 2013-05-09 18:56:22

回答

1

您的插入語句假定結果表只有一列需要插入數據。如果在您執行ADD COLUMN之前表已經有其他列,這不太可能是真實的。

您需要跟蹤結果表中的列,併爲每列提供數據(或默認值)。

從應用程序內部擴展表格的結構是非常不尋常的。你想達到什麼目的?你確定你無法通過定義固定表格然後從你的應用程序添加數據來實現它嗎?

UPDATE

好的,我想我明白你在描述什麼。在第一次迭代中,ALTER TABLE創建第一列。 INSERT添加了一堆在第一列中有數據的行。

在第二個方面,ALTER TABLE創建第二列。 INSERT創建了一大堆新行,但只填充第二列。第一列全爲NULL,因爲您沒有爲其提供值。對於第三次和隨後的迭代等等等等。

如果您的實際意圖是複製源表及其數據,那麼您應該一次創建結果表。你知道列結構,對吧?使用CREATE TABLE語句。然後編寫一條類似於下面的INSERT語句:

INSERT INTO [results] 
([field1_result], [field2_result], [field3_result]) 
SELECT [Result] As 
[field1_result, [field2_result], [field3_result]] 
FROM [newtable] 

這是你的想法嗎?

+0

所以我應該首先添加所有列,然後將數據放入這些列中? – gta0004 2013-05-09 19:07:29

+0

通常人們首先創建所有列的表。然後,當應用程序運行時,它使用SELECT,INSERT,UPDATE和DELETE操作來處理表中的數據。通常會添加行,而不是列。應用程序通常不會即時創建列。但這取決於你想要做什麼。 – criticalfix 2013-05-09 19:24:19

+0

@ gta0004我已經更新了我的答案。 – criticalfix 2013-05-09 19:39:16

1

在你進入循環創建[results]表作爲

SQL = "CREATE TABLE [results] SELECT [primary_key] FROM [newtable]" 
db.Execute SQL 

然後在循環的每次迭代執行

SQL = "ALTER TABLE [results] ADD COLUMN [" & fld.Name & "_result] TEXT(25)" 
db.Execute SQL 

SQL = "UPDATE [results] SET r.[" & fld.Name & "_result] = n.[Result] " & 
     "FROM [results] r, [newtable] n " & 
     "WHERE r.[primary_key] = n.[primary_key]" 
db.Execute SQL 

所以,如果你在它的前兩個迭代像有你[newtable]

[primary_key] [Results] [primary_key] [Results] 
    1   A    1   D 
    2   B    2   E 
    3   C    3   F 

您的[results]表(以上兩個迭代後)看起來像

[primary_key] [fld1_result] [fld2_result] 
    1    A    D 
    2    B    E 
    3    C    F 
+0

生病的傢伙。這看起來應該可以工作,但是它會給'n。[結果] FROM [results] r'上的語法錯誤(缺少運算符)出於某種原因? – gta0004 2013-05-09 20:57:30

+0

好的。我不得不做Update-Inner Join-Set,因爲你的某些原因沒有工作。同樣對於訪問它是SELECT .. INTO .. FROM而不是Create Table As ..你確實將我設置在正確的路徑上,所以TYVM!另外我不知道你可以在查詢中進行重命名。這非常棒。 – gta0004 2013-05-09 21:35:01

相關問題