[英]Insert multipe rows for the same value - SQL
如何為相同的值插入多個行,例如,每個用戶必須提交2個表單,所以每個表單中的用戶名相同,但信息不同
我嘗試使用UPDATE,但是它刪除了ole信息,並用新的ole信息代替,而我想同時保留兩者
有沒有辦法做到這一點?
insert into your_table (username, col2)
values ('user1', 1),
('user1', 2)
您可以添加重復數據,只是您的主鍵不能被復制,因為這會導致主鍵約束。 因此,您可以做的是增加一列,例如將“ ID”設為您的主鍵。 提交行時,繼續將ID列的值加1,其余數據可能相同。
使用下面的插入格式來獲得所需的結果:
insert into Table_name(Field1, Field2)
SELECT 'user_1', 1 UNION ALL
SELECT 'user_1', 2
這取決於您的USERNAME列是否允許重復。
如果它是表的主鍵,則您的表模式不支持您要執行的操作,因為PK應該是UNIQUE。
如果您的USERNAME列允許重復,則可以使用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語句。 我一定會去創建存儲過程來執行此插入操作。
有兩個表,“ USERS”和“ FORMSUBMISSIONS”
用戶首次提交表單時,將在USERS表中創建一個新條目,該條目對每個用戶而言都是唯一的,並且將包含與該用戶連接的信息。
並且,無論何時提交表單(包括第一次提交),都會將條目及其詳細信息以及返回給USERS的外鍵寫入FORMSUBMISSIONS表。
對於這種情況,這是一個更干凈的數據模型。 它還將幫助將來查詢數據。 如果由於某種原因而僅限於一個表,則只要USER字段上沒有唯一鍵,連續插入將按上述方式工作。
您可以為此使用批量插入查詢。 按照@huergen的建議,但請確保您的用戶名或表單數據中的任何字段都沒有UNIQUE鍵索引。 您還可以在該表中添加另一個類似於PRIMARY鍵的字段。有很多方法可以使用,但這取決於您的要求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.