9
votes

Suppression d'une ligne basée sur la valeur maximale

Comment puis-je structurer une requête MySQL pour supprimer une ligne basée sur la valeur max.

J'ai essayé xxx

mais a eu une erreur? < / p>


2 commentaires

Je conseillerais contre cela. Comment se fait-il que vous ne connaissez pas un certain identifiant de la ligne à supprimer?


@Common Sense, comme la question indique que la ligne souhaitée doit être supprimée est la ligne qui est définie par une valeur max (plutôt qu'une ligne définie par un ID). Cela accomplirait dans une requête ce que vous pourriez proposer de faire en deux? C'est-à-dire une requête pour l'ID de la rangée maximale; Puis supprimez cette ligne.


4 Réponses :


16
votes

Utilisation:

DELETE FROM TABLE
 WHERE jobPositonId = (SELECT x.id
                         FROM (SELECT MAX(t.jobPostionId) AS id 
                                 FROM TABLE t) x)


1 commentaires

@ROBERT DE KLERK: Voir la mise à jour de ma réponse pour expliquer le comportement.



0
votes
DELETE FROM `table_name` WHERE jobPositonId IN (select max(jobPostionId) from `table_name` limit 1)

4 commentaires

Erreur MySQL 1093 - Impossible de spécifier la table cible de la mise à jour de la clause


Pourquoi auriez-vous même besoin de la clause limite si vous utilisez Max sans corrélation ni groupe?


Même erreur Erreur MySQL 1093 - Impossible de spécifier la table cible de la mise à jour de la clause


Désolé pour mes mauvaises informations, je n'avais pas le temps de le tester, +1 pour Konerak, il post la bonne réponse;)



19
votes
DELETE FROM table ORDER BY jobPositonId DESC LIMIT 1

1 commentaires

Parfait! Supprimé toutes les lignes à la fois dans ma table d'auto-référencement. (Sans la limite 1, bien sûr)



0
votes

Ceci fonctionne: xxx

autre que d'aller à la base de données deux fois, y a-t-il quelque chose de mal avec cette technique?


0 commentaires