繁体   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