SQL插入多行,其中一列始终相同,一列不同

时间:2011-06-15 09:31:43

标签: sql

是否有快速方法可将多个值插入一列,而第二列则具有不同的值。

假设我有两列名为NumberColourNumber列始终为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

4 个答案:

答案 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)