2017-02-14 4 views
-1

Disons que j'ai une table Exemple:Création des doublons de lignes dans une table SQL en changeant une colonne

characterid Primay Key 
charactername 
charatertype 
picture1 
picture2 

De plus, disons il y a des milliers de lignes dans ce tableau.

Je veux sélectionner toutes les lignes: where characterid like 'a%', puis créer un doublon des lignes sélectionnées en modifiant leurs caractéristiques. Puisque characterid est la clé primaire et je ne peux pas avoir de doublons.

Les lignes nouvellement insérées auront des caractéristiques similaires à l'exception de la première lettre «a» qui sera modifiée en «b».

C'est jusqu'où je suis allé à ce jour:

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

Veuillez marquer la base de données appropriée (ne pas étiqueter plusieurs) et postez votre tentative pour la résoudre. –

+0

vkp, oui. vient d'ajouter l'ajustement. – shle2821

+1

toutes les autres valeurs de colonne doivent-elles être conservées? –

Répondre

2

il suffit de remplacer le premier caractère dans l'ID de caractères en utilisant la fonction concat et 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

Je pense que la meilleure façon est exprimée en:

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

Postgres n'a pas besoin du troisième argument à substr() .