是否有快速方法可将多个值插入一列,而第二列则具有不同的值。
假设我有两列名为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代码,所以增量不起作用)。
所以我必须完成40个颜色行的插入,列号= 1 40个插入,列号= 2 列数= 3的40个插入,依此类推到100
答案 0 :(得分:2)
如果我正确理解了这个问题,那么您正在寻找随机代码字段和色域的所有组合。
例如,如果您有三种颜色红色,绿色和蓝色以及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
答案 1 :(得分:1)
将它们放在单独的子选择中,并允许交叉连接(,
):
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)
答案 2 :(得分:0)
也许您可以在插入行之前将DEFAULT
列的Number
值设置为1
,然后将其删除?
答案 3 :(得分:0)
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)