2011-08-08 96 views
3

無論哪裏CODE =「BB」,我想插入一個新的行與所有相同的行/列數據只需將代碼更改爲「XX」。sql - 插入新行,其中字段等於另一個值

例如:

當前表:

ID | CODE | Name 
---+----------+--------- 
1 | AA | Tom 
2 | BB | Mary 
3 | AA | John 
4 | CC | Carlos 
5 | CC | Mario 
6 | BB | Steve 
7 | AA | Pablo 

相同的SQL語句後執行:

ID | CODE | Name 
---+----------+--------- 
1 | AA | Tom 
2 | BB | Mary 
3 | AA | John 
4 | CC | Carlos 
5 | CC | Mario 
6 | BB | Steve 
7 | AA | Pablo 
8 | XX | Mary 
9 | XX | Steve 

這可以在SQL語句來完成?而不是做我想要做的事情,那就是創建一個腳本來遍歷每個記錄檢查「BB」並根據它的值插入一個新行。

回答

7

此代碼包含檢查,以確保一個 'XX' 的版本不存在。

INSERT INTO CurrentTable 
    (CODE, Name) 
    SELECT 'XX', ct1.Name 
     FROM CurrentTable ct1 
     WHERE ct1.CODE = 'BB' 
      AND NOT EXISTS(SELECT NULL 
           FROM CurrentTable ct2 
           WHERE ct1.name = ct2.name 
            AND ct2.CODE = 'XX') 
+1

+1。對於可重複性! –

1

假設ID是標識列:

INSERT INTO myTable (Code, Name) 
SELECT ('XX', Name) FROM myTable 
WHERE CODE ='BB' 

(不rerunnable ...)

0

我不知道你是怎麼生成的ID,但是這是它是如何工作的:

insert into my_table 
select new_id() as id, 'xx' as Code, Name 
from my_table 
where Code='BB' 
相關問題