我的mysql表中可能有180个条目。我仍然有很多行要插入但我最终需要添加一个名为“style”的附加列,它将有两个选项。首先,我需要为我已经拥有的前几百个条目添加一个选项 - 然后我需要复制那些相同的条目,除了选项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。