mysql重复行并替换

时间:2015-05-18 20:17:12

标签: mysql replace duplicates

我的mysql表中可能有180个条目。我仍然有很多行要插入但我最终需要添加一个名为“style”的附加列,它将有两个选项。首先,我需要为我已经拥有的前几百个条目添加一个选项 - 然后我需要复制那些相同的条目,除了选项2为“样式”。我的最终问题是如何快速复制这些行(最好是通过简单的查询),以及如何复制那些相同的行,但为“样式”提供不同的选项。
谢谢

2 个答案:

答案 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>

答案 1 :(得分: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列的最大值,执行{ {1}},并再次获取最大值。这将为您提供刚刚插入的行的insert ... select值范围。

但是,只需在需要时插入行就可以更轻松,更高效,而无需运行单独的UPDATE。