Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql-在字段等于另一个值的位置插入新行_Sql_Database_Postgresql - Fatal编程技术网

sql-在字段等于另一个值的位置插入新行

sql-在字段等于另一个值的位置插入新行,sql,database,postgresql,Sql,Database,Postgresql,无论哪里CODE=“BB”,我想插入一个包含所有相同行/列数据的新行,只需将代码更改为“XX” 例如: 当前表格: ID | CODE | Name ---+----------+--------- 1 | AA | Tom 2 | BB | Mary 3 | AA | John 4 | CC | Carlos 5 | CC | Mario 6 | BB | Steve 7 | AA | P

无论哪里CODE=“BB”,我想插入一个包含所有相同行/列数据的新行,只需将代码更改为“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
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语句后相同:

ID |    CODE  | Name
---+----------+---------
 1 |    AA    | Tom
 2 |    BB    | Mary
 3 |    AA    | John
 4 |    CC    | Carlos
 5 |    CC    | Mario
 6 |    BB    | Steve
 7 |    AA    | Pablo
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”并根据其值插入新行。

假设ID是一个标识列:

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

(不可重新命名…

此代码包括一项检查,以确保“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')

我不知道您是如何生成id的,但它是如何工作的:

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