Maison > Questions et réponses > le corps du texte
Dans ma classe de lycée, nous apprenons actuellement MySQL et comment sélectionner et trier des éléments en fonction de certains critères. Par exemple
Select CountryCode from Country where code like '_W%'
Ce code fonctionne dans ma base de données, mais il y a un problème que je n'arrive pas à résoudre :
Récupérez toutes les données des pays commençant par les caractères "N", "O" ou "P". les trier Classés par ordre alphabétique des noms.
Je comprends que nous devons utiliser des caractères génériques et j'ai tout essayé mais ça ne marche tout simplement pas, soit cela affiche uniquement les pays commençant par N, soit la liste complète avec "null"
Ma requête de code actuelle est
SELECT * from country where name like 'N%' 'O%' 'P%' order by nameJ'apprécierais toute aide dès que j'ai d'autres sujets à traiter
La réponse ressemble un peu à ceci : Mais plus détaillée, avec plus de colonnes et de lignes, avec des données comme le PIB, l'espérance de vie, etc.
Continent | |
---|---|
Afrique | |
Asie | |
Asie | |
-------------- |
P粉5877801032024-03-31 14:54:52
...name LIKE 'N%' OR name LIKE 'O%' OR name LIKE 'P%'
ne sera pas très efficace puisqu'elle sera traitée en interne comme 3 sous-requêtes avec correspondance de modèles. De plus, OR oblige le moteur à rechercher les doublons - même si nous savons qu'il n'y a pas de doublons. Même si la plupart (mais pas la totalité) de ces problèmes seront corrigés par l'optimiseur, il est préférable (et plus lisible) d'écrire comme ceci :
select * from country where left(name, 1) in 'NOP' order by name
P粉1158400762024-03-31 11:05:36
Cela devrait fonctionner car il faut écrire name LIKE 'N%' OR name LIKE ...
SELECT * FROM country WHERE name LIKE 'N%' OR name LIKE 'O%' OR name LIKE 'P%' ORDER BY name