2017-02-14 4 views
-1

Допустим, у меня есть пример таблицы:Создание дубликатов строк в таблице SQL, изменяя один столбец

characterid Primay Key 
charactername 
charatertype 
picture1 
picture2 

Кроме того, предположим, что есть тысячи строк в этой таблице.

Я хочу выделить все строки: where characterid like 'a%', а затем создать дубликаты строк, выбранных при изменении их символов. Поскольку characterid является первичным ключом, и у меня не может быть дубликатов.

Вновь вставленные строки будут иметь похожие символы, кроме первой буквы «a», которая будет изменена на «b».

Это как далеко я зашел так далеко:

INSERT INTO sample 
    SELECT * FROM sample WHERE characterid LIKE 'a%'; 
+2

просим пометить соответствующую базу данных (не помечать несколько) и опубликовать вашу попытку решить эту проблему. –

+0

vkp, да. просто добавила корректировку. – shle2821

+1

Должны ли сохраняться все остальные значения столбцов? –

ответ

2

Просто замените первый символ в идентификатор персонажа с помощью Concat и SubStr функции:

INSERT INTO sample (characterid, charactername, charatertype, picture1, picture2) 
SELECT concat('b',SUBSTR (characterid, 2, len(characterid()) , charactername, charatertype, picture1, picture2 
    FROM sample WHERE characterid like 'a%'; 
1

Я думаю, самый простой способ выражается как:

INSERT INTO sample (characterid, charactername, charatertype, picture1, picture2) 
    SELECT 'b' || SUBSTR(characterid, 2), . . . 
     FROM sample WHERE characterid like 'a%'; 

Postgres не нужен третий аргумент substr() ,