表中的重复行,但需要更改一列中的数据

时间:2012-11-01 18:44:31

标签: sql

我有表 step_year :id,step_id,year

我想要复制所有年份= 1011的行(从年份= 1011的step_year中选择*),但不是那些新创建的行具有相同年份(1011),我想将其更改为1112。

感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

您可以根据INSERT执行SELECT,但请指定年份而不是从查询中提取

INSERT INTO `step_year` (`id`, `step_id`, `year`)
SELECT `id`, `step_id`, 1112 AS `year` 
FROM `step_year` where `year` = 1011

此语法适用于MySQL,但应适用于大多数数据库。

答案 1 :(得分:1)

如果您的数据库支持它:

INSERT INTO step_year
(id, step_id, year)
SELECT sub_year.id, sub_year.step_id, 1112
  FROM step_year sub_year
  WHERE sub_year.year = 1011

答案 2 :(得分:1)

insert into step_year(id, step_id,year)
select id,step_id,1112 from step_year where year = 1011

答案 3 :(得分:1)

如果id字段是自动增量,请使用此

INSERT INTO step_year(step_id,year)
           SELECT step_id, 1112 FROM step_year WHERE year = 1011

如果id字段不是自动增量

INSERT INTO step_year(id, step_id, year)
           SELECT ROW_NUMBER() OVER(ORDER BY id) + COUNT(year) id, step_id, 1112 FROM step_year WHERE year = 1011