我有表step_year : id, step_id, year
我想复制所有年份 = 1011 的行(从 step_year 中选择 *,其中年份 = 1011),但不是那些新创建的具有相同年份(1011)的行,而是我想将其更改为 1112。
任何帮助表示赞赏。
我有表step_year : id, step_id, year
我想复制所有年份 = 1011 的行(从 step_year 中选择 *,其中年份 = 1011),但不是那些新创建的具有相同年份(1011)的行,而是我想将其更改为 1112。
任何帮助表示赞赏。
您可以INSERT
基于 aSELECT
但指定年份而不是从查询中提取它
INSERT INTO `step_year` (`id`, `step_id`, `year`)
SELECT `id`, `step_id`, 1112 AS `year`
FROM `step_year` where `year` = 1011
此语法适用于 MySQL,但应该适用于大多数数据库。
如果您的数据库支持它:
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
insert into step_year(id, step_id,year)
select id,step_id,1112 from step_year where year = 1011
如果 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