2011-10-12 4 views
0

J'ai une table delete_requests où je stocke les ID pour les demandes de suppression pour les entrées de ma table d'utilisateurs. Est-il possible de supprimer des utilisateurs avec les informations de delete_requests comme condition?MySQL: DELETE FROM avec des informations d'une sous-requête

Mon problème est que le jeu de résultats ne sera généralement pas limité à une ligne mais retourner plusieurs.

DELETE FROM users WHERE id=(SELECT id FROM delete_requests) 

Alors MySQL se plaint:

#1242 - Subquery returns more than 1 row 

peut-il être fait dans une déclaration sans mettre la logique dans l'application d'exécuter?

+0

il se doit, à cause de vous ne limitons pas la sous-requête pour récupérer enregistrement spécifique, il est aller chercher tous les dossiers et ** = ** signifie que vous cherchez seulement pour un seul match. – punit

+0

avez-vous essayé avec id IN (sous-requête) plutôt id = – punit

+0

merci punit, je l'ai essayé et ça marche bien. –

Répondre

5

Utilisez la clause IN

DELETE FROM users WHERE id IN (SELECT id FROM delete_requests) 
+0

Merci Shakti, ça marche maintenant! –

+0

@Frank: Votre toujours bienvenue –

2

Vous pouvez utiliser la clause in.

DELETE FROM users WHERE id IN (SELECT id FROM delete_requests) 
2
DELETE FROM users WHERE id IN (SELECT id FROM delete_requests) 
Questions connexes