2012-11-01 50 views
0

我有表step_year:ID,step_id的數據類型,年份重複行,但需要在一列更改數據

我想複製這都行一年= 1011(SELECT * FROM step_year哪裏年份= 1011),而不是那些新創建的行同年(1011)我想將其更改爲1112.

任何幫助表示讚賞。

+0

當你說「重複」,你是重新插入記錄,還是僅僅選擇雙倍的記錄? – LittleBobbyTables

+0

將行復製爲新行。 – Brad

回答

1

你可以根據SELECTINSERT但指定的,而不是從查詢

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

這句法是MySQL拉的一年,但應該適應大多數數據庫。

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 
+0

您需要爲此語法省略'VALUES',除非您想要,否則不需要別名'step_year'。 – doublesharp

1
insert into step_year(id, step_id,year) 
select id,step_id,1112 from step_year where year = 1011 
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 
相關問題