Maison >base de données >tutoriel mysql >UNION ALL avec LIMIT 1 peut-il simuler efficacement des requêtes séquentielles ?
Requêtes sélectives séquentielles utilisant UNION ALL
Problème :
Recherche d'une seule ligne dans une table de base de données avec critères de recherche progressivement réduits. Par exemple :
SELECT * FROM image WHERE nom LIKE 'text' AND group_id = 10 LIMIT 1
Si aucun résultat n'est obtenu, exécutez :
SELECT * FROM image WHERE nom LIKE 'text' LIMIT 1
Si toujours aucun résultat, exécuter :
SELECT * FROM image WHERE group_id = 10 LIMIT 1
Ce processus peut-il être effectué avec un seul expression ?
Solution :
SELECT * FROM image WHERE name = 'name105' AND group_id = 10 UNION ALL SELECT * FROM image WHERE name = 'name105' UNION ALL SELECT * FROM image WHERE group_id = 10 LIMIT 1;
Explication :
Générique Solution :
L'approche ci-dessus peut être généralisée pour n'importe quel nombre de paramètres de recherche en ajoutant des instructions SELECT supplémentaires à la chaîne UNION ALL.
Considérations relatives aux résultats triés :
Étant donné que la clause LIMIT s'applique à l'ensemble du résultat, le tri n'est pas particulièrement utile car seule la première ligne sera renvoyée.
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!