私はテーブルstep_yearを持っています: id, step_id, year
year = 1011 のすべての行を複製したい (select * from step_year where year = 1011) が、新しく作成された同じ年 (1011) の行の代わりに、1112 に変更したい.
どんな助けでも大歓迎です。
私はテーブルstep_yearを持っています: id, step_id, year
year = 1011 のすべての行を複製したい (select * from step_year where year = 1011) が、新しく作成された同じ年 (1011) の行の代わりに、1112 に変更したい.
どんな助けでも大歓迎です。
insert into step_year(id, step_id,year)
select id,step_id,1112 from step_year where year = 1011
データベースがサポートしている場合:
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
に基づいて行うことができますがSELECT
、クエリからプルする代わりに年を指定します
INSERT INTO `step_year` (`id`, `step_id`, `year`)
SELECT `id`, `step_id`, 1112 AS `year`
FROM `step_year` where `year` = 1011
この構文は MySQL 用ですが、ほとんどのデータベースに適応できるはずです。
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