Comment puis-je structurer une requête MySQL pour supprimer une ligne basée sur la valeur max.
J'ai essayé p> mais a eu une erreur? P> < / p>
4 Réponses :
Utilisation:
DELETE FROM TABLE WHERE jobPositonId = (SELECT x.id FROM (SELECT MAX(t.jobPostionId) AS id FROM TABLE t) x)
@ROBERT DE KLERK: Voir la mise à jour de ma réponse pour expliquer le comportement.
DELETE FROM `table_name` WHERE jobPositonId IN (select max(jobPostionId) from `table_name` limit 1)
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;)
DELETE FROM table ORDER BY jobPositonId DESC LIMIT 1
Parfait! Supprimé toutes les lignes à la fois dans ma table d'auto-référencement. (Sans la limite 1, bien sûr)
Ceci fonctionne: autre que d'aller à la base de données deux fois, y a-t-il quelque chose de mal avec cette technique? p> p>
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.