IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

différents DELETE FROM matable WHERE monchamp in (resultat d'un select)


Sujet :

SQL Procédural MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 42
    Points : 44
    Points
    44
    Par défaut différents DELETE FROM matable WHERE monchamp in (resultat d'un select)
    Bonjour,

    Je souhaite réaliser une suppression de données dans différentes tables avec un WHERE champ IN(...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE FROM matable1 WHERE xxx IN (...)
    DELETE FROM matable2 WHERE xxx IN (...)
    ...

    je souhaite que les valeurs passées dans le IN soient le résultat d'une requête réalisée précédemment.

    j'ai la solution première de placer systématiquement ma requête dans tous les IN. mais en terme de performances et de lisibilité du code, cela ne me convient pas.

    j'ai aussi la solution de passer par un CURSOR (DECLARE moncurseur CURSOR FOR SELECT xxx ...) et de faire les DELETE en bouclant sur les valeurs de moncurseur. Idem, je ne suis pas sûr que ce soit le meilleure solution pour les perfs.

    Avez-vous d'autres solutions?
    Merci par avance.

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    j'ai la solution première de placer systématiquement ma requête dans tous les IN. mais en terme de performances et de lisibilité du code, cela ne me convient pas.
    La différence est-elle significative? Je veux dire est ce que c'est bcp plus long de faire un select puis un delete par rapport à faire en une seule requete?

    D'ailleurs pourquoi passer par un IN ? pourquoi ne pas mettre que le WHERE du DELETE normal et simplifier l'expression ! Je suis sur que tu peux utiliser la syntaxe multitable ou USING pour ton cas.

    http://dev.mysql.com/doc/refman/5.0/en/delete.html

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 42
    Points : 44
    Points
    44
    Par défaut
    merci, le multitable fera l'affaire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. DELETE FROM . . . WHERE EXISTS
    Par tfc3146 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 30/08/2011, 12h33
  2. delete from table1 where rien dans table2
    Par tofito dans le forum Débuter
    Réponses: 3
    Dernier message: 03/12/2009, 17h14
  3. Requete: Delete from T where Not In
    Par jamesleouf dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/05/2008, 09h15
  4. Delete * From * Where ?!
    Par gui38 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/12/2006, 10h51
  5. DELETE FROM t where t.id IN (SELECT id FROM t....)
    Par davcha dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/01/2006, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo