Comment sélectionner les N premières lignes dans MySQL
Sélectionner les N premières lignes d’un tableau est une tâche fondamentale quand on travaille avec des bases de données. Dans ce tutoriel, on va voir comment faire dans MySQL avec des exemples concrets.
Avant de continuer ta lecture, je voulais te parler de notre client MySQL moderne, Beekeeper Studio. Ouvre un tableau et il pagine les lignes pour toi, ou fais un clic droit dessus et choisis SQL: Select Top pour obtenir la requête. Il est gratuit pour MySQL, télécharge-le ici.
Utiliser la clause LIMIT
La clause LIMIT de MySQL permet tout simplement d’indiquer le nombre de lignes à renvoyer dans le résultat d’une requête.
Exemple : sélectionner les 5 premières lignes
Imaginons que tu as un tableau nommé employees avec le schéma suivant :
CREATE TABLE employees (
id INT,
name VARCHAR(100),
salary DECIMAL(10, 2)
);
Tu veux sélectionner les 5 employés ayant les salaires les plus élevés, par ordre décroissant.
SELECT id, name, salary
FROM employees
ORDER BY salary DESC
LIMIT 5;
Pourquoi ça marche :
-
ORDER BY salary DESCtrie les lignes du salaire le plus élevé au plus bas. -
LIMIT 5limite le résultat aux 5 premières lignes après le tri.
Résultat attendu :
+----+----------+--------+
| id | name | salary |
+----+----------+--------+
| 3 | Alice | 90000 |
| 5 | Bob | 85000 |
| 2 | Charlie | 75000 |
| 6 | Diana | 70000 |
| 4 | Edward | 68000 |
+----+----------+--------+
Gérer les égalités avec LIMIT
En cas d’égalité, utiliser simplement LIMIT peut donner des résultats incohérents si tu ne gères pas les égalités. Ajoute des colonnes à ORDER BY pour les départager.
Exemple : gérer les égalités avec un tri secondaire
Pour départager les salaires identiques, trie sur l’id de l’employé comme critère secondaire :
SELECT id, name, salary
FROM employees
ORDER BY salary DESC, id ASC
LIMIT 5;
Pourquoi ça marche :
- Ajouter
id ASCgarantit qu’en cas d’égalité de salaire, les employés avec l’idle plus petit sont toujours choisis.
Utiliser LIMIT pour la pagination
Au-delà des N premières lignes, on a souvent besoin de paginer les résultats en sélectionnant une plage de lignes précise.
Exemple : sélectionner les 5 lignes suivantes
Pour paginer les résultats et sélectionner les lignes 6 à 10 selon le salaire :
SELECT id, name, salary
FROM employees
ORDER BY salary DESC
LIMIT 5 OFFSET 5;
Pourquoi ça marche :
-
LIMIT 5indique le nombre de lignes à renvoyer. -
OFFSET 5ignore les 5 premières lignes.
Résultat attendu :
Les 5 employés suivants après le top 5 :
+----+---------+--------+
| id | name | salary |
+----+---------+--------+
| 1 | Frank | 67000 |
| 7 | Grace | 64000 |
| 8 | Hannah | 60000 |
| 9 | Ivan | 59000 |
| 10 | Jane | 58000 |
+----+---------+--------+
Conclusion
Sélectionner les N premières lignes dans MySQL avec la clause LIMIT est simple et efficace. En cas d’égalités possibles, assure un ordre de tri stable en ajoutant des colonnes dans l’ORDER BY. Cette technique simple est indispensable pour de nombreuses applications, notamment l’analyse et le reporting, surtout avec de gros volumes de données.
En maîtrisant ces techniques, tu contrôleras mieux la récupération et la manipulation des données dans MySQL.
Beekeeper Studio est une interface MySQL gratuite et open source
J’utilise Beekeeper Studio pour mon travail sur MySQL depuis peu, et c’est vite devenu l’un de mes outils de base de données préférés. L’interface est épurée, moderne et sans distraction, ce qui permet de se concentrer sur ses requêtes sans le fouillis de certains autres outils. - Surendra Singh
Beekeeper Studio est un client MySQL rapide, intuitif et facile à utiliser. Il prend aussi en charge plein d’autres bases de données et fonctionne très bien sur Windows, Mac et Linux.
Ce que les utilisateurs de MySQL disent de Beekeeper Studio
J’ai choisi ce programme après des années passées sur phpMyAdmin — c’est comme entrer dans un monde de meilleure qualité ; ici, j’ai vraiment senti qu’on prend soin de l’utilisateur. Le concept, la mise en œuvre, l’expérience au quotidien — je suis sincèrement reconnaissant envers Matthew pour tout cela.
Outil fabuleux, l’IDE le plus pratique que j’aie trouvé à ce jour pour administrer des bases Postgres et MySql - ça marche, tout simplement, sans prise de tête :-)