peignage de SUPPRIMER et COMME dans une instruction sqlite
Je suis en train d'essayer de combiner les deux en une seule déclaration, j'irais même jusqu'à s'installer pour deux déclarations séparées..... Je sais que cela doit être possible, mais comment?
c'est ce que j'ai essayé:
DELETE FROM myTable WHERE myValue LIKE 'findme%';
et:
DELETE FROM myTable WHERE EXISTS (SELECT * FROM myTable WHERE myValue LIKE 'findme%');
J'obtiens une erreur pour la deuxième déclaration, disant quelque chose comme, vous ne pouvez avoir qu'un seul résultat pour une déclaration avec une autre déclaration...
qui deux déclarations?
La première requête devrait fonctionner correctement. Ce qui se passe lorsque vous exécutez? Qui SQLite version utilisez-vous?
La première requête devrait fonctionner correctement. Ce qui se passe lorsque vous exécutez? Qui SQLite version utilisez-vous?
OriginalL'auteur gypsyDev | 2011-02-27
Vous devez vous connecter pour publier un commentaire.
Votre première déclaration devrait fonctionner. Essayez sans le point-virgule final peut-être?
Le second n'est pas logique. Votre sous-requête n'est pas corrélée à la première, et vous ne peut pas analyser un tableau qui est en cours de modification. En fait ce que je m'attends à partir de cette requête, si elle serait déjà exécuté, c'est que toutes les lignes sont supprimées si il y a une ligne où votre colonne correspond à...
Si vous vous demandez pourquoi les solutions avec le
IN
clause de travailler et de ne pas leEXISTS
, c'est parce que laEXISTS
condition est évaluée pour chaque ligne, alors que leIN
ensemble est évaluée une fois.Je suppose que vous êtes en utilisant une API? La prochaine fois, vous devriez probablement de l'état dans la question!
Je pense que la version de sqlite est sqlite3? Je suis la modification de la base de données à partir d'objective-C dans un projet xCode.
Les états devraient inclure le point-virgule lorsque vous utilisez SQLite shell, mais en général, quand vous écrivez votre propre programme et de l'utilisation d'une interface pour SQLite, vous n'avez pas besoin d'eux.
OriginalL'auteur Benoit
Si cette instruction retourne toutes les lignes
puis remplacer "select *" avec "supprimer" devrait les supprimer.
Qui devrait fonctionner avec toute la base de données SQL, aussi longtemps que vous avez les autorisations suffisantes.
OriginalL'auteur Mike Sherrill 'Cat Recall'
Cela fonctionne pour moi:
OriginalL'auteur neurino
Avez-vous essayé?
OriginalL'auteur
OriginalL'auteur Sorin Haidau