2012-07-03 47 views
-3

有點難以用SQL解釋,因爲我使用的是內部技術,但假設我有一個結構數組(類似於C#中的結構, C++等),我想在表中插入它的值。 的一個方法是psedu代碼,通過數組迭代,閱讀結構的領域,並將其插入到表是這樣的:在一張表中插入多行只有一個插入命令

for int i =1 to array.Lenght 
{ 
    insert into MyTable values 
    { 
     MyTable.Field1 = array[i].Field1; 
     //etc ... 
    } 
} 

但這是因爲performnce壞。如果數組有十個元素,我們將調用插入方法十次。 應該有一個brillinat方法做到這一點只有一個插入,不知何故在表上使用JOINS,只是插入一次,但我無法想象如何做到這一點...

任何想法都是值得歡迎的。

謝謝。

+0

SQL服務器,Oracle,MySQL和...? –

+0

另外,您從OOP語言調用命令,或者您在尋找純粹的基於SQL腳本的解決方案嗎? – Arithmomaniac

+0

怎麼樣INSERT INTO SELECT - http://www.1keydata.com/sql/sqlinsert.html – feco

回答

1

這可以確保查詢被執行一次。這只是一個想法,避免多次調用插入

@sql = 'insert into mytable(col_1) values' 
for int i =1 to array.Lenght 
{ 
    if(i > 1) 
    @sql = ',('[email protected] + array[i].Field1+')' 
    else 
    @sql = '('[email protected] + array[i].Field1+')' 
} 
@sql = @sql + ';' 
exec @sql 

腳本看起來像

insert into mytable(col_1) values 
(1),(2),(3); 
5

插入多條記錄到MySQL與一個查詢:

INSERT INTO example 
    (example_id, name, value, other_value) 
VALUES 
    (100, 'Name 1', 'Value 1', 'Other 1'), 
    (101, 'Name 2', 'Value 2', 'Other 2'), 
    (102, 'Name 3', 'Value 3', 'Other 3'), 
    (103, 'Name 4', 'Value 4', 'Other 4'); 

http://www.electrictoolbox.com/mysql-insert-multiple-records/

+1

你怎麼知道他們在使用mySQL? –

+1

這同樣適用於SQL Server 2008 - http://stackoverflow.com/questions/452859/inserting-multiple-rows-in-a-single-sql-query –