【发布时间】:2018-04-22 23:32:37
【问题描述】:
我正在尝试使用该表中的值填充一个表
CREATE TABLE PLATOS(Idplatos integer PRIMARY KEY, Tipo varchar(20), PlatoP varchar(20));
INSERT INTO Platos VALUES('1','entrada','ceviche');
INSERT INTO Platos VALUES('2','entrada','arrozleche');
INSERT INTO Platos VALUES('3','sopa','caldo');
INSERT INTO Platos VALUES('4','sopa','mote');
INSERT INTO Platos VALUES('5','plato','lomo');
INSERT INTO Platos VALUES('6','plato','rusa');
到这个:
Create table abril2017(nrodia integer,entrada varchar(20), sopa varchar(20), plato varchar(20),unique(entrada,sopa,plato));
我试过这段代码
declare @nd int
set @nd=1
while @nd<=31
begin
Insert into abril2017 values (@nd,
(Select TOP 1 PlatoP from Platos where tipo = 'entrada' oRDER BY NEWID()),
(Select TOP 1 PlatoP from Platos where tipo = 'sopa' Order by NewId()),
(Select TOP 1 PlatoP from Platos where tipo = 'plato' oRDER by NewId()))
SET @nd=@nd+1
end
到目前为止结果还可以,但我不想出现的错误是:
1) nrodia,只有在成功插入时才必须 +1,现在 它总是+1,这破坏了他的目的。 nrodia 的意思是“天数”。
2) 违反 UNIQUE KEY 约束 'UQ__abril201__24030ECAAB418A64'。无法插入重复键 对象“dbo.abril2017”。重复键值为 (arrozleche, mote, 洛莫)。声明已终止。
出现此错误,但无论如何我的所有值都被插入而没有重复,我只是不想在执行插入的最后一个代码时显示这个或类似的东西,我不知道这是一个错误还是只是相似的东西?。 最后代码可以正常工作并且必须解决这些问题,第一个表实际上将有 15 个值而不仅仅是 6 个,所以如果有人可以为我提供更多值的情况的解决方案会更好,谢谢。
1 arrozleche caldo lomo
3 arrozleche mote lomo
4 ceviche mote lomo
5 ceviche mote rusa
7 arrozleche mote rusa
8 ceviche caldo rusa
11 ceviche caldo lomo
16 arrozleche caldo rusa
如何查看第一个表中不重复的那些值的所有可能组合(但仍然显示问题编号 2)),左侧的数字必须是 1,2,3.. . 直到最后一行,在本例中为 8。这只是一个示例,如果您使用代码插入,您将有一个不同的表,因为插入的值是随机的。
【问题讨论】:
标签: sql insert duplicates