2009-03-16 8 views
0

J'ai un tas de lignes dans un tableau avec des colonnes a, b, c. J'aimerais pouvoir SÉLECTIONNER toutes les lignes où dis a = 1, et les réinsérer avec a = 2. Conserver essentiellement toutes les lignes où la colonne a existe telle quelle, et avoir un nouveau lot de lignes ayant comme = 2. Quelle est la meilleure requête pour établir une telle requête multi-INSERT? Tout cela se passe dans la même table. Cela ne me dérange pas d'en utiliser une temporaire si c'est nécessaire.requête MySQL (mélange d'un insert avec select)

Répondre

9

Facile à réaliser.

INSERT INTO mytable 
(a, b, c) 
SELECT 2, b, c 
FROM mytable 
WHERE a = 1 
+0

est-il un risque de créer des boucles infinies en utilisant cette syntaxe? – nickf

+0

Il n'y a pas de croisement entre ce que vous insérez (a = 2) et ce que vous sélectionnez (a = 1) mais même s'il y en avait je ne crois pas que cela fonctionne de cette façon, ce qui signifie que vos inserts ne sont pas récupérés votre sélection. – cletus

2
insert into table1 (col1, col2, col3) select col1, col2, 2 
    from table2 where col3 = 1 
Questions connexes