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)