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

SQL插入多行,其中一列始终相同,另一列不同,sql,Sql,当第二列具有不同的值时,是否有一种快速方法可以将多个值插入到一列中 假设我有两列名为Number和color。数字列始终为1,颜色列会发生变化 目前我正在做以下工作 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

当第二列具有不同的值时,是否有一种快速方法可以将多个值插入到一列中

假设我有两列名为
Number
color
数字
列始终为1,
颜色
列会发生变化

目前我正在做以下工作

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的插入
40个插入,列号=3,依此类推到100

也许您可以在插入行之前将
列号的
默认值设置为
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)

如果我正确理解了这个问题,那么你在寻找随机码域和颜色域的所有组合

例如,如果你有三种颜色,红、绿、蓝和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

抱歉,数字列将更改,但仅在插入40次后。。。因此,我将有一个不同的数字,但只是偶尔更改,而颜色列必须每次更改。。我希望这是有意义的。在这种情况下,您可以使用嵌套循环(例如在php中):外部循环用于数字值,内部循环用于颜色值。@barry嗨barry它们确实来自另一个表。。。但实际上,我要修复的是数字列,只需更改一次即可执行多次操作columns@anna-那么数字列在每40次插入后只会增加一次?有重复的颜色吗?@barry请查看我对原始问题的编辑-数字实际上是随机代码,而不是1-100。颜色列的值是从哪里获得的?那个存储在另一个表中吗?
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)