La requête MySQL Limit est utilisée pour limiter le nombre de lignes renvoyées par le jeu de résultats, plutôt que aller chercher l'ensemble dans la base de données MySQL. La clause Limit fonctionne avec l'instruction SELECT pour renvoyer uniquement le nombre de lignes spécifié. Cette requête n'accepte qu'un ou deux arguments et leurs valeurs doivent être zéro ou tout entier positif.
C'est essentiel dans un tel cas lorsque la table contient des milliers de lignes ou que vous souhaitez renvoyer uniquement les données récemment insérées. En d'autres termes, si vous ne souhaitez pas récupérer toutes les lignes renvoyées par la requête, utilisez la clause MySQL Limit avec l'instruction SELECT. Il améliore les performances de la requête et évite même de faire planter le système lorsque la table contient un grand nombre de données.
Pour obtenir uniquement les lignes spécifiées de la table, MySQL utilise le LIMITE clause, alors que SQL utilise la HAUT clause, et Oracle utilise la ROWNUM clause avec le SÉLECTIONNER déclaration.
Syntaxe
Voici la syntaxe d'utilisation de la requête Limit dans MySQL :
SELECT column_list FROM table_name LIMIT offset, count;
Dans la syntaxe ci-dessus, nous pouvons voir :
Liste_colonnes : C'est le nom de la colonne que vous souhaitez renvoyer.
Nom de la table: C'est le nom de la table qui contient le nom de votre colonne.
Compenser: Il spécifie le numéro d'une ligne à partir de laquelle vous souhaitez revenir. Le décalage de la ligne commence à 0 et non à 1.
Compter: Il spécifie le nombre maximum de lignes que vous souhaitez renvoyer.
La représentation visuelle suivante l’explique plus clairement :
REMARQUE : Si vous spécifiez un seul argument avec la clause Limit, MySQL suppose que cela détermine le nombre maximum de lignes pour renvoyer la sortie du jeu de résultats. Dans ce cas, les arguments de la clause Limit, le décalage et le nombre sont équivalents.
Clause LIMIT avec clause ORDER BY
L'utilisateur doit utiliser la clause Limit avec la clause Order By . Sans utiliser la clause Order By, vous obtiendrez le résultat dans un ordre non précisé . Dans ce cas, il est difficile de savoir à partir de quelles lignes la requête renvoie le résultat. C'est donc une bonne habitude à prendre Clause Grouper par avec une clause Limit pour obtenir les lignes dans un ordre spécifique.
La syntaxe suivante peut être utilisée pour obtenir le résultat dans un ordre unique :
SELECT column_list FROM table_name GROUP BY order_expression LIMIT offset, count;
Exemples de limites MySQL
Créons un exemple de table dans la base de données contenant les données suivantes et comprenons comment fonctionne la clause Limit dans MySQL à l'aide de divers exemples :
Tableau : salariés
1. Limite MySQL pour renvoyer les lignes les plus hautes ou les plus basses
La déclaration suivante a été utilisée pour sélectionner les cinq meilleurs employés les plus jeunes :
SELECT * FROM employees ORDER BY emp_age LIMIT 5;
Cette instruction trie d'abord l'âge des employés à l'aide de la clause Group By, puis la clause Limit renvoie les cinq premiers résultats. Après avoir exécuté les étapes ci-dessus, nous obtiendrons le résultat suivant :
2. MySQL Limit pour obtenir une plage de lignes en utilisant le décalage
Parfois, vous souhaitez obtenir un résultat compris entre les plages de valeurs. Par exemple, vous disposez d'un grand nombre de lignes pour afficher les données sur les applications, puis les diviser en pages, et chaque page contient au maximum 10 lignes dans un tableau. Dans ce cas, vous pouvez utiliser la requête suivante pour obtenir une plage de lignes :
SELECT emp_id, emp_name, income FROM employees ORDER BY income DESC LIMIT 3,7;
Cette instruction renvoie les lignes à partir de la ligne numéro 3 et va jusqu'à un maximum de 7ème lignes. Il trie également les revenus de l’employé du plus haut au plus bas. Exécutez la requête et vous obtiendrez le résultat suivant :
échange de mémoire
3. Limite MySQL avec la clause WHERE
MySQL Limit peut également être utilisé avec la clause WHERE . Il vérifie d'abord la condition spécifiée dans le tableau et produit les lignes qui correspondent à la condition.
Cette requête sélectionne les cinq premiers employés dont l'âge est supérieur à 30 ans. Ici, nous avons également utilisé la clause Order By pour trier les employés par ordre décroissant en fonction de leurs revenus.
SELECT emp_name, emp_age, income FROM employees WHERE emp_age>30 ORDER BY income DESC LIMIT 5;
Après une exécution réussie de l'instruction ci-dessus, nous obtiendrons le résultat suivant :
4. MySQL LIMIT pour obtenir la nième valeur la plus élevée ou la plus basse
Parfois, nous souhaitons obtenir les lignes de nième valeur la plus élevée ou la plus basse. Dans ce cas, nous pouvons utiliser la clause MySQL LIMIT suivante pour obtenir le résultat attendu :
SELECT column_list FROM table_name ORDER BY expression LIMIT n-1, 1;
Dans cette syntaxe, la clause LIMIT n-1, 1 renvoie 1 ligne qui commence à la ligne n.
Par exemple, la requête suivante renvoie les informations sur l'employé dont le revenu est le deuxième le plus élevé :
SELECT emp_name, city, income FROM employees ORDER BY income LIMIT 1, 1;
En exécutant l'instruction ci-dessus, la requête suivante sera obtenue :
Il est à noter que la requête ci-dessus ne fonctionne que lorsque votre table ne contient pas deux employés ayant un certain revenu. Dans ce cas, nous utiliserons DENSE_RANK () pour obtenir un résultat plus précis.