无论CODE =“BB”,我想插入一个包含所有相同行/列数据的新行,只需将CODE更改为“XX”。
例如:
当前表:
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”并插入基于的新行这是价值观。
答案 0 :(得分:8)
此代码包含一项检查,以确保“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)
假设ID是IDENTITY列:
INSERT INTO myTable (Code, Name)
SELECT ('XX', Name) FROM myTable
WHERE CODE ='BB'
(不可重复......)
答案 2 :(得分:0)
我不知道你是如何生成id的,但这就是它的工作方式:
insert into my_table
select new_id() as id, 'xx' as Code, Name
from my_table
where Code='BB'