J'ai une table avec la structure suivante: p>
1 |
rouge
2 | Bleu
3 |
jaune
8 | Violet
10 | Green
.
.
.
100 | jaune p>
J'aimerais pouvoir saisir la valeur ID max pour les 5 premières lignes. P>
Par exemple, je voudrais faire quelque chose comme ça: Sélectionnez Max (ID) à partir de la limite de table 5 p>
En espérant que cela retournerait la valeur 10 p>
Mais, MySQL continue de retourner 100 ... c'est comme MySQL ne voit même pas la clause limite. P>
4 Réponses :
Utilisez un sous-sélection:
SELECT MAX(id) FROM (SELECT id FROM table LIMIT 5);
Non valide SQL. Vous avez besoin d'un alias sur chaque table dérivée + vous devez avoir une commande - vous obtenez donc des résultats «définis».
On dirait que vous souhaitez sélectionner les 5 enregistrements TOP (commandé par ID), puis obtenir la valeur la plus élevée de ce groupe? Si oui:
SELECT MAX(ID) FROM ( SELECT ID FROM YourTable ORDER BY ID LIMIT 5 ) as T1
Vous n'avez probablement pas besoin de "choisir *"; Seul "Select ID" devrait être suffisant? (Je ne suis pas sûr que ce ne soit pas, mais peut-être choisir uniquement le (s) champ (s) que vous avez besoin pourrait diminuer la mémoire d'amout requise - ce qui est toujours agréable)
Oui, cela devrait être SELECT ID CODE>
Mais cela crée une nouvelle table, lorsque nous avons juste besoin du max. Je suis en train de dire que ceci est aussi lent que la sélection des lignes triées avec limite code> et calculer le maximum extérieur SQL.
Il y a une meilleure façon de le faire que le sous-sélection: Obtenez une ligne mais saute 4 d'abord ..
Ajouter 'ordre par ID' s'il s'agit de la table myisam. P> p>
Cela fonctionne si vous savez combien de rangées il y a. Si vous dépassez le nombre de lignes, la requête renvoie NULL. J'avais besoin de cela à des fins de lot, mais la version maximale est plus appropriée dans mon cas.
Joli! mais ne fonctionnera pas au cas où il y a 4 au lieu de 5 enregistrements
Si vous avez une table avec la structure suivante la valeur ID max pour les 5 premières valeurs (auto_incrènement?) est 5.
BTW, la valeur ID max pour les 6 premières valeurs est de 6. et 100 pour toutes les valeurs.
Meilleures salutations. P> p>