Maison >base de données >tutoriel mysql >Comment limiter les résultats par entreprise lors de l'utilisation d'UNION dans MySQL ?
La combinaison des opérations UNION et LIMIT dans MySQL limite le nombre de résultats par entreprise
L'objectif est de récupérer 20 emplois correspondant à des critères précis auprès de deux entreprises précisées, tout en limitant le nombre de résultats à un maximum de 10 par entreprise. Des problèmes surviennent lors de l'utilisation de UNION DISTINCT et LIMIT, car cette dernière affecte l'ensemble des résultats plutôt que les ensembles de résultats individuels pour chaque entreprise.
La solution suivante résout ce problème :
<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)) ORDER BY name;</code>
Le réglage clé consiste à imbriquer la clause LIMIT dans des instructions SELECT individuelles plutôt que de l'appliquer à l'ensemble de résultats combiné. Cela garantit que les résultats sont limités à un maximum de 10 par entreprise. Nous utilisons ensuite une autre instruction ORDER BY externe pour trier le résultat combiné final par nom de société.
N'oubliez pas que MySQL applique ORDER BY après UNION, donc un autre ORDER BY est nécessaire pour trier l'ensemble de résultats combiné.
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!