0

我有表step_year : id, step_id, year

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

任何帮助表示赞赏。

4

4 回答 4

1

您可以INSERT基于 aSELECT但指定年份而不是从查询中提取它

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

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

于 2012-11-01T18:49:22.937 回答
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
于 2012-11-01T18:50:26.820 回答
1
insert into step_year(id, step_id,year)
select id,step_id,1112 from step_year where year = 1011
于 2012-11-01T18:53:17.913 回答
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
于 2012-11-01T19:07:03.377 回答