0

私はテーブルstep_yearを持っています: id, step_id, year

year = 1011 のすべての行を複製したい (select * from step_year where year = 1011) が、新しく作成された同じ年 (1011) の行の代わりに、1112 に変更したい.

どんな助けでも大歓迎です。

4

4 に答える 4

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

データベースがサポートしている場合:

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に基づいて行うことができますがSELECT、クエリからプルする代わりに年を指定します

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

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 に答える