2015-05-18 82 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,会更容易和更高效。