{MySQL} Requête DELETE suite à requête SELECT
magicbret
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
HostOfSeraphim Messages postés 6750 Date d'inscription Statut Contributeur Dernière intervention -
HostOfSeraphim Messages postés 6750 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis en train de créer un script shell visant à supprimer les doublons d'une table. Ce script sera ensuite automatisé par une tâche cron, toute les nuits.
Mon problème est que je dois supprimer plusieurs lignes résultant d'une requete SELECT mais je ne vois pas quelle requête écrire. Toute aide est donc la bienvenue.
Voici le code :
#!/bin/bash
# On récupère la date du jour
now=`date +"%Y-%m-%d"`
echo "ICI_LA_REQUETE_A_INSERER" | mysql database -u username -ppassword
Et la requête SELECT est la suivante :
SELECT RadAcctId,UserName,AcctStartTime,AcctStopTime,AcctSessionTime,NASIPAddress, COUNT(*) FROM radacct GROUP BY UserName, AcctStopTime HAVING COUNT(*) > 1 AND LEFT(AcctStartTime,10) = '$now'
Cette requête me renvoie x résultats, que je dois supprimer par une requête DELETE, le tout de façon automatique.
Merci pour votre aide.
Je suis en train de créer un script shell visant à supprimer les doublons d'une table. Ce script sera ensuite automatisé par une tâche cron, toute les nuits.
Mon problème est que je dois supprimer plusieurs lignes résultant d'une requete SELECT mais je ne vois pas quelle requête écrire. Toute aide est donc la bienvenue.
Voici le code :
#!/bin/bash
# On récupère la date du jour
now=`date +"%Y-%m-%d"`
echo "ICI_LA_REQUETE_A_INSERER" | mysql database -u username -ppassword
Et la requête SELECT est la suivante :
SELECT RadAcctId,UserName,AcctStartTime,AcctStopTime,AcctSessionTime,NASIPAddress, COUNT(*) FROM radacct GROUP BY UserName, AcctStopTime HAVING COUNT(*) > 1 AND LEFT(AcctStartTime,10) = '$now'
Cette requête me renvoie x résultats, que je dois supprimer par une requête DELETE, le tout de façon automatique.
Merci pour votre aide.
A voir également:
- {MySQL} Requête DELETE suite à requête SELECT
- Hiberfil.sys delete - Guide
- Juste delete me - Guide
- Mysql community server - Télécharger - Bases de données
- Please select boot device - Forum Matériel & Système
- Delete boot option - Forum BIOS
3 réponses
Bonjour,
Une requête sql delete porte sur miminum 2 choses la table et un champ de cette table.
Par exemple : DELETE FROM table WHERE champ = 'valeur'
Les valeurs doivent être identique de préférence.
Attention si pas de clause WHERE toutes les données de la table seront supprimées.
@+
Une requête sql delete porte sur miminum 2 choses la table et un champ de cette table.
Par exemple : DELETE FROM table WHERE champ = 'valeur'
Les valeurs doivent être identique de préférence.
Attention si pas de clause WHERE toutes les données de la table seront supprimées.
@+
Merci. Je m'aperçois que ma demande est un peu floue.
Pour la syntaxe de DELETE, c'est ok. En gros, je pense que je devrais m'orienter vers quelque chose comme :
DELETE FROM radacct WHERE EXISTS ( SELECT.........)
ou
DELETE FROM radacct IN ( SELECT.........)
La requête doit supprimer toute les lignes contenues dans la requête SELECT, qui doit être imbriquée je pense.
Pour la syntaxe de DELETE, c'est ok. En gros, je pense que je devrais m'orienter vers quelque chose comme :
DELETE FROM radacct WHERE EXISTS ( SELECT.........)
ou
DELETE FROM radacct IN ( SELECT.........)
La requête doit supprimer toute les lignes contenues dans la requête SELECT, qui doit être imbriquée je pense.
Re,
Oui nous nous sommes compris.
Mais n'empêche que pour la syntaxe avec IN ou EXIST (SELECT ....) faudra bien pointer sur une valeur.
Quelle est la valeur que vous souhaitez supprimer ?
Voyez cette exemple :
DELETE FROM fournisseurs WHERE EXISTS ( select clients.nom from clients where clients.client_id = fournisseurs.fournisseur_id and clients.client_nom= 'MICROSOFT' );
Cette exemple plus complexe va supprimer des enregistrements dans une table basée sur des valeurs dans une autre table.
Bon courage
Oui nous nous sommes compris.
Mais n'empêche que pour la syntaxe avec IN ou EXIST (SELECT ....) faudra bien pointer sur une valeur.
Quelle est la valeur que vous souhaitez supprimer ?
Voyez cette exemple :
DELETE FROM fournisseurs WHERE EXISTS ( select clients.nom from clients where clients.client_id = fournisseurs.fournisseur_id and clients.client_nom= 'MICROSOFT' );
Cette exemple plus complexe va supprimer des enregistrements dans une table basée sur des valeurs dans une autre table.
Bon courage