sql - вставить новую строку, где поле равно другому значению - PullRequest
3 голосов
/ 08 августа 2011

Где бы КОД = "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

То же самое После выполнения оператора 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» и вставляя новую строку на основе ее значений.

Ответы [ 3 ]

8 голосов
/ 08 августа 2011

Этот код включает проверку, чтобы убедиться, что версия '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 голос
/ 08 августа 2011

Предполагается, что ID - это столбец IDENTITY:

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

(Не перезапускается ...)

0 голосов
/ 08 августа 2011

Я не знаю, как вы генерируете идентификаторы, но вот как это работает:

insert into my_table 
select new_id() as id, 'xx' as Code, Name 
from my_table 
where Code='BB'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...