2011-06-15 221 views
6

是否有快速的方法將多個值插入到一列中,而第二列具有不同的值。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個 40插入與列數= 3等等至100

+2

你在哪裏得到的值,色列?是否存儲在另一個表中? – codingbadger 2011-06-15 09:41:30

回答

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 
+0

嗨謝謝,似乎工作 – anna 2011-06-15 10:26:29

0

也許你可以在插入行之前將Number列的DEFAULT值設置爲1,然後將其刪除?

+0

對不起,數列將改變,但只有40插入後......所以我會有一個不同的數字,但只有偶爾改變,而顏色列必須改變每次..我希望這是有道理的.. – anna 2011-06-15 09:39:18

+0

在這種情況下,你可以使用一個嵌套的循環(例如在php中):Number值的外部循環和Color值的內部循環。 – patapizza 2011-06-15 09:42:37

+0

@barry嗨巴里他們確實來自另一個表......但它真的是我想修復的數字列,只是改變一次做多列 – anna 2011-06-15 09:44:22

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) 
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) 
相關問題