Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/07/2011, 11h47   #1
Invité régulier
 
Inscription : mai 2010
Messages : 40
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 40
Points : 6
Points : 6
Par défaut insert into select distinct(xx)on duplicate key

Hi all,

J'ai un petit soucis avec ma procédure stockée.

Je tente d’insérer ou bien d'updater des enregistrements (v_tablename provient d'une valeur d'un curseur):
Code :
1
2
3
SET @sql = concat( 'INSERT INTO admin_router (reporter,ip, description) ',
                           'SELECT distinct(reporter_id), router_ip, reporter_id FROM ',v_tablename, ' WHERE reporter_id !=\'\' GROUP BY router_ip;',
                           ' ON DUPLICATE KEY UPDATE last_seen = CURRENT_TIMESTAMP', reporter=reporter_id);
Le problème vient du fait que reporter_id n'est pas reconnu. Si j’enlève le distinct et le group by, cela marche, le problème est que la table v_tablename contient beaucoup d'enregistrements, ce n'est pas judicieux d'updater pour tous les enregistrements. Une idée pour me débloquer ?
gre_sfo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 12h23   #2
Invité régulier
 
Inscription : mai 2010
Messages : 40
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 40
Points : 6
Points : 6
(merci ced pour les balises, et désolé de ne pas les avoir utilisées)

j'ai trouvé une solution qui à l'air de marcher. Je crée une vue temporaire qui exécute ma requête avec le distinct, puis ensuite je fais un insert select *. Pour finir je drop ma vue

Ce n'est certainement pas la meilleure solution, mais ça marche quand même.
gre_sfo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h46.


 
 
 
 
Partenaires

Hébergement Web