Maison >base de données >tutoriel mysql >Comment récupérer les N premiers travaux de plusieurs entreprises à l'aide de UNION et LIMIT de MySQL ?
UNION et LIMIT de MySQL : récupérer efficacement les meilleurs emplois de plusieurs entreprises
Cet article montre comment récupérer un nombre spécifié d'emplois de premier plan auprès de différentes entreprises à l'aide des clauses UNION
et LIMIT
de MySQL. Le défi consiste à appliquer un LIMIT
à la sélection d'emploi de chaque entreprise de manière indépendante, plutôt que globalement dans toutes les entreprises.
Une approche courante, mais imparfaite, utilise UNION DISTINCT
avec une seule clause LIMIT
. Cela applique la limite à l'ensemble de résultats combiné, et non à chaque entreprise individuellement.
La solution, telle que détaillée dans la documentation MySQL, consiste à appliquer la clause LIMIT
dans chaque SELECT
instruction individuelle de la UNION
requête. Cela garantit une limitation indépendante des données de chaque entreprise.
Voici la requête optimisée pour récupérer les 10 meilleurs emplois de « Company1 » et « Company2 » :
<code class="language-sql">(SELECT c.name, j.title, j.`desc`, j.link FROM jobs_job j INNER JOIN companies_company c ON j.company_id = c.id WHERE c.name IN ('Company1') ORDER BY name, title LIMIT 0, 10) UNION (SELECT c.name, j.title, j.`desc`, j.link FROM jobs_job j INNER JOIN companies_company c ON j.company_id = c.id WHERE c.name IN ('Company2') ORDER BY name, title LIMIT 0, 10)</code>
Cette requête récupère efficacement les 10 principaux emplois de chaque entreprise, satisfaisant ainsi l'exigence de limitation indépendante au sein de l'opération UNION
. Cette technique est cruciale pour une récupération de données précise et efficace lorsque vous travaillez avec plusieurs sources de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!