2015-05-18 84 views
1

我的mysql表中可能有180個條目。我仍然有許多行要插入,但我最終需要添加一個名爲「style」的附加列,它將有兩個選項。首先,我需要爲前幾百個參賽作品提供一個選項 - 接下來我需要複製除了選項2之外的相同參賽作品「style」。我最終的問題是如何快速複製這些行(最好是用一個簡單的查詢),以及如何複製這些相同的行,但使用不同的「樣式」選項。
謝謝mysql重複行並替換

+0

基本上我想重複幾百行,然後更改這些行的特定列的值。 –

+0

你的首要關鍵是autoincremental?你能否將你的表格的描述添加到問題中? – bugs2919

+0

是的,我的主鍵是自動增量的。也許這將是一個很好的機會來向我描述如何包含我的表格的表示。我看到很多人這樣做:**************(對不起,這是如此模糊,但我希望你明白我的觀點)。 –

回答

0

您可以使用insert-select語句。

如果只想複製行:

INSERT INTO mytable 
SELECT * 
FROM mytable 
WHERE <some condition> 

要使用不同的樣式複製:

INSERT INTO mytable 
SELECT col1, col2, 'someString' AS style 
FROM mytable 
WHERE <some condition> 
0
-- set first option on all rows 
UPDATE mytable 
    SET style = 'first option' ; 

如果你不這樣做單獨的INSERT和單獨的更新更容易;只需插入你想要的行。您可以在SELECT語句中爲style提供文字值,並插入該值。

-- replicate to a second set of rows with different option 
INSERT INTO mytable (a,b,c,style) 
SELECT t.a, t.b, t.c, 'different option' AS style 
    FROM mytable t 
WHERE t.style = 'first option' ; 

否則,如果你複製行,包括style,你需要區分它們之間的行更新,而這行不進行更新。 (問題中提供的信息不足以向您提供建議。)使用auto_increment id列,您可以獲得id列的最大值,執行insert ... select,並再次獲取最大值。這會給你剛剛插入的行的id值的範圍。

但是,只需按需要插入行,而不運行單獨的UPDATE,會更容易和更高效。