如何解决SQL插入多行,其中一列始终相同,而一列不同
| 有没有一种快速的方法可以将多个值插入一列,而第二列具有不同的值。 假设我有两列分别称为Number
和Colour
。 Number
列始终为1,Colour
列更改。
目前,我正在执行以下操作...
INSERT INTO ColourTable(Number,Colour)
SELECT \'1\',\'red\'
UNION ALL
SELECT \'1\',\'yellow\'
UNION ALL
SELECT \'1\',\'green\'
UNION ALL
SELECT \'1\',\'blue\'
UNION ALL
SELECT \'1\',\'orange\'
如果只需要执行少量插入操作,那很好,但是问题是我需要在颜色列更改的情况下插入大约100行,而我想知道是否可以设置数字列吗?
**我认为我需要更好地解释自己...
说颜色列有40种不同的颜色,我需要将这些颜色插入到不同的行中,数字列说1到100(数字实际上是randon代码,所以递增将不起作用)。
所以我必须用列号= 1进行40个颜色行的插入
40个插入,列号= 2
40个插入,列号= 3,依此类推,直到100
解决方法
如果我正确理解了这个问题,那么您正在寻找随机代码字段和颜色字段的所有组合。
因此,例如,如果您有红色,绿色和蓝色三种颜色以及3个随机代码1、14、25,那么您需要以下设置。
1 red
1 green
1 blue
14 red
14 green
14 blue
25 red
25 green
25 blue
如果是这种情况,则可以生成一对表格,一个带有代码,另一个带有颜色
CREATE TABLE #Codes(
[CodeNumber] int NOT NULL
)
Insert Into #Codes
Select 1
Union All
Select 14
Union All
Select 25
CREATE TABLE #Colours(
[Colour] varchar(50) NOT NULL
)
Insert Into #Colours
Select \'red\'
Union All
Select \'green\'
Union All
Select \'blue\'
然后使用交叉联接返回所有组合。
Select cd.CodeNumber,cl.Colour
From #Codes cd
Cross Join #Colours cl
, 将它们放在单独的子选择中,并允许进行交叉联接(,
):
INSERT INTO ColourTable(Number,Colour)
SELECT Num.n,Col.c FROM
(select \'1\') Num(n),(select \'red\' union all
select \'yellow\' union all
select \'green\' union all
select \'blue\' union all
select \'orange\') Col(c)
, 也许可以在插入行之前将“ 0”列的“ 10”值设置为“ 12”,然后再将其删除?
, INSERT INTO ColourTable(Number,Colour)
SELECT \'1\',Col.c FROM
(select \'red\' union all
select \'yellow\' union all
select \'green\' union all
select \'blue\' union all
select \'orange\') Col(c)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。