MySQL: Comment insérer un enregistrement pour chaque résultat dans une requête SQL?

Dis que j’ai une sélection

SELECT DISTINCT id, customer_id, domain FROM config WHERE type = 'foo'; 

qui renvoie des enregistrements.

Comment puis-je faire un insert pour atteindre la ligne dans le jeu de résultats comme

 INSERT INTO config (id, customer_id, domain) VALUES (@id, @customer_id, 'www.example.com'); 

@id et @customer_id sont les champs de la ligne du jeu de résultats?

edit: Je ne voulais pas simplement le dupliquer, mais plutôt insérer une nouvelle valeur dans le domain . Néanmoins, une situation facepalm est simple comme bonjour 😉 Merci!

Aussi simple que cela:

 INSERT INTO config (id, customer_id, domain) SELECT DISTINCT id, customer_id, domain FROM config; 

Si vous voulez ” www.example.com ” comme domaine, vous pouvez faire:

 INSERT INTO config (id, customer_id, domain) SELECT DISTINCT id, customer_id, 'www.example.com' FROM config; 
 INSERT INTO config (id, customer_id, domain) SELECT id, customer_id, 'www.example.com' FROM ( SELECT DISTINCT id, customer_id, domain FROM config WHERE type = 'foo' ) x; 
 INSERT INTO Config (id, customer_id, domain) SELECT DISTINCT id, customer_id, 'www.example.com' FROM config 

La documentation de MySQL pour cette syntaxe est ici:

http://dev.mysql.com/doc/refman/5.1/en/insert-select.html

EDIT – Après avoir lu le commentaire sur la réponse de @Krtek.

Je suppose que vous demandez une mise à jour au lieu d’insérer –

 update config set domain = 'www.example.com' 

Cela mettra à jour tous les enregistrements existants dans la table de configuration avec le domaine comme «www.exemple.com» sans créer de doublons.

VIEILLE RÉPONSE

vous pouvez utiliser quelque chose comme –

 INSERT INTO config (id, customer_id, domain) select id, customer_id, domain FROM config 

Note: – Cela ne fonctionnera pas si vous avez un identifiant comme clé primaire

Exécutez cette instruction SQL:

 -- Do nothing. 

Vous voulez sélectionner des lignes distinctes de “config” et insérer ces mêmes lignes dans la même table. Ils sont déjà là. Rien à faire.

À moins que vous souhaitiez simplement mettre à jour une partie ou la totalité des valeurs de la colonne “domaine”. Cela nécessiterait une instruction UPDATE qui fait vraiment quelque chose.