簡體   English   中英

插入具有相同值的多行-SQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM