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