如何爲同一個值插入多個行 例如,每個用戶必須提交2個表單,以便每個表單中的用戶名相同,但信息不同插入多個行爲相同的值 - SQL
我試圖用更新,但它消除了OLE信息,並用新的替換它,而我想保留兩個
是有辦法做到這一點?
如何爲同一個值插入多個行 例如,每個用戶必須提交2個表單,以便每個表單中的用戶名相同,但信息不同插入多個行爲相同的值 - SQL
我試圖用更新,但它消除了OLE信息,並用新的替換它,而我想保留兩個
是有辦法做到這一點?
有兩個表,「用戶」和「FORMSUBMISSIONS」
當用戶提交表單的第一次,在用戶表,這是爲每個用戶唯一創建一個新的條目,將包含信息連接到用戶。
而且無論何時提交表單(包括第一次),都會將一個條目寫入FORMSUBMISSIONS表中,並提供該提交的詳細信息,並將外鍵返回給USERS。
對於這種情況,這是一個更乾淨的數據模型。它也將有助於未來對數據的查詢。如果出於某種原因限制爲單個表格,則只要USER字段中沒有唯一鍵,連續插入就可以像上面那樣工作。
insert into your_table (username, col2)
values ('user1', 1),
('user1', 2)
也確保「用戶名」列沒有UNIQUE索引 –
您可以添加重複數據只是您的主鍵不能重複,因爲它會導致主鍵約束。所以你可以做的是有一個額外的列讓我們說「ID」使它成爲你的主要關鍵。在提交行繼續添加ID列值時,其餘數據可能會相同。
使用下面插入格式,讓您期望的結果:
insert into Table_name(Field1, Field2)
SELECT 'user_1', 1 UNION ALL
SELECT 'user_1', 2
這取決於你的用戶名列是否允許重複。
如果它是表的主鍵,那麼表模式不支持您想要執行的操作,因爲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語句。我肯定會去創建存儲過程來做這個插入。
您可以使用批量插入查詢。如@huergen建議的那樣,但要確保您的用戶名或可能在表單數據中的任何字段沒有UNIQUE鍵索引。您還可以添加另一個與該表中的PRIMARY鍵一樣工作的字段。這樣做的方式很多,但取決於您的要求。
到同一張表中,還是分成兩個不同的表? – jarlh