2011-04-11 29 views
1

我想在一個插入添加100行,填充每個字段與下一個在一系列的數字(和他們的字符串等值)。這是可能的在mySQL

換句話說,沿着這些東西線(mynumber的將是一個varchar,myOrder將是一個int):

INSERT INTO myTable的(mynumber的,myOrder)選擇 「0」 - 「99」,選擇1- 100

我有一種感覺,這是無法完成的,但我想我會問。

回答

2

的一個子集,您應該能夠無需創建一個全新的表...只要你有一張表格,並且你希望添加儘可能多的記錄,即使對內容沒有影響...你可以用MySQL查詢變量來做...

insert into YourTable (YourSequence, YourStringVersion, field3) 
    (SELECT 
      @seq:= @seq+1 YourSequence, 
      CONVERT(@seq, CHAR(8)) YourStringVersion, 
      "Other Defaults" field3 
     FROM 
      (select @seq := 1) vars, 
      SomeTableWithAtLeast100Records limit 100) JustToAdd 
+0

太棒了!非常感謝,像夢一樣工作。 – 2011-04-11 17:22:21

0

可以寫出了「選擇0-99,選擇1-100」爲一組工會:

select 0 as num, 1 as order 
union all 
select 1 as num, 2 as order 

,然後插入基於該結果集。雖然沒有太多樂趣,但最好的方法可能是通過存儲函數和光標 - 但是一次只能有1行。

0

我無法想象你正在努力解決哪個問題,哪個需要解決方案 - 你似乎也會用類似奇怪的問題發表大量的問題。

既然你正在尋找一個代碼解決方案,你可能想要做很多次。簡短的回答是使用的程序與循環,還是要保持一個表(甚至可能是行「mytable的」內再做

INSERT INTO myTable (mynumber, myorder, another) 
SELECT mynumber, myorder, 'new' 
FROM myTable WHERE another='TEMPLATE'; 
+0

特殊的指責......我以前的哪些問題對你來說看起來有點奇怪?至於我在這裏的需求,他們非常直截了當,我有一張桌子,代表一系列完全相同的順序元素(想象一排排座位,例如),我需要填充表格。顯然這可以通過腳本或存儲過程來完成,但我很好奇它是否可以用直接的SQL來完成。 – 2011-04-11 16:56:43