2017-02-20 25 views
0

如何爲同一個值插入多個行 例如,每個用戶必須提交2個表單,以便每個表單中的用戶名相同,但信息不同插入多個行爲相同的值 - SQL

我試圖用更新,但它消除了OLE信息,並用新的替換它,而我想保留兩個

是有辦法做到這一點?

+0

到同一張表中,還是分成兩個不同的表? – jarlh

回答

0

有兩個表,「用戶」和「FORMSUBMISSIONS」

當用戶提交表單的第一次,在用戶表,這是爲每個用戶唯一創建一個新的條目,將包含信息連接到用戶。

而且無論何時提交表單(包括第一次),都會將一個條目寫入FORMSUBMISSIONS表中,並提供該提交的詳細信息,並將外鍵返回給USERS。

對於這種情況,這是一個更乾淨的數據模型。它也將有助於未來對數據的查詢。如果出於某種原因限制爲單個表格,則只要USER字段中沒有唯一鍵,連續插入就可以像上面那樣工作。

3
insert into your_table (username, col2) 
values ('user1', 1), 
     ('user1', 2) 
+1

也確保「用戶名」列沒有UNIQUE索引 –

0

您可以添加重複數據只是您的主鍵不能重複,因爲它會導致主鍵約束。所以你可以做的是有一個額外的列讓我們說「ID」使它成爲你的主要關鍵。在提交行繼續添加ID列值時,其餘數據可能會相同。

0

使用下面插入格式,讓您期望的結果:

insert into Table_name(Field1, Field2) 
SELECT 'user_1', 1 UNION ALL 
SELECT 'user_1', 2 
0

這取決於你的用戶名列是否允許重複。

如果它是表的主鍵,那麼表模式不支持您想要執行的操作,因爲PK應該是UNIQUE。

如果您的用戶名列允許重複的,你可以使用INSERT:

declare @username varchar(max) = 'your_username' --declare a variable to use the same username 

insert into table_name (username, form_data) 
values(@username, 'form_data_1') 
     ,(@username, 'form_data_2') 

這也取決於你如何執行SQL語句。我肯定會去創建存儲過程來做這個插入。

0

您可以使用批量插入查詢。如@huergen建議的那樣,但要確保您的用戶名或可能在表單數據中的任何字段沒有UNIQUE鍵索引。您還可以添加另一個與該表中的PRIMARY鍵一樣工作的字段。這樣做的方式很多,但取決於您的要求。