Heim > Fragen und Antworten > Hauptteil
In meiner High-School-Klasse lernen wir gerade etwas über MySQL und wie man Elemente anhand bestimmter Kriterien auswählt und sortiert. Zum Beispiel
Select CountryCode from Country where code like '_W%'
Dieser Code funktioniert in meiner Datenbank, aber es gibt ein Problem, das ich nicht lösen kann:
Rufen Sie alle Daten für Länder ab, die mit den Zeichen „N“, „O“ oder „P“ beginnen. sortiere sie Alphabetisch nach Namen geordnet.
Ich verstehe, dass wir Platzhalter verwenden müssen und ich habe alles versucht, aber es funktioniert einfach nicht, es werden entweder nur Länder angezeigt, die mit N beginnen, oder die vollständige Liste mit „null“
Meine aktuelle Codeabfrage ist
SELECT * from country where name like 'N%' 'O%' 'P%' order by name
Ich würde mich über jede Hilfe freuen, sobald ich andere Themen habe, mit denen ich mich befassen muss
Die Antwort sieht in etwa so aus: Aber detaillierter, mit mehr Spalten und Zeilen, mit Daten wie BIP, Lebenserwartung usw.
Name | Festland |
---|---|
Namibia | Afrika |
Oman | Asien |
Pakistan | Asien |
-------- | -------------- |
Danke Sohail für die Antwort, es hat funktioniert!
P粉5877801032024-03-31 14:54:52
...name LIKE 'N%' OR name LIKE 'O%' OR name LIKE 'P%'
不会非常高效,因为它将在内部被视为具有模式匹配的 3 个子查询。此外,OR 使得引擎有必要检查重复项 - 尽管我们知道没有重复项。 虽然其中大部分(但不是全部)将由优化器修复,但这样写会更好(也更易读):
select * from country where left(name, 1) in 'NOP' order by name
P粉1158400762024-03-31 11:05:36
这应该有效,因为您必须编写 name LIKE 'N%' OR name LIKE ...
SELECT * FROM country WHERE name LIKE 'N%' OR name LIKE 'O%' OR name LIKE 'P%' ORDER BY name