Rumah > Soal Jawab > teks badan
Dalam kelas sekolah menengah saya sekarang, kami belajar tentang MySQL dan cara memilih dan mengisih item berdasarkan kriteria tertentu. Contohnya
Select CountryCode from Country where code like '_W%'
Kod ini berfungsi dalam pangkalan data saya, tetapi ada satu masalah yang tidak dapat saya selesaikan:
Dapatkan semula semua data untuk negara bermula dengan aksara "N", "O" atau "P". menyusun mereka Disusun mengikut abjad nama.
Saya faham bahawa kita perlu menggunakan kad bebas dan saya mencuba semuanya tetapi ia tidak berjaya, sama ada ia hanya menunjukkan negara bermula dengan N atau senarai penuh dengan "null"
Pertanyaan kod semasa saya ialah
SELECT * from country where name like 'N%' 'O%' 'P%' order by name
Saya akan menghargai sebarang bantuan segera kerana saya mempunyai subjek lain yang perlu saya tangani
Jawapannya kelihatan seperti ini sedikit: Tetapi lebih terperinci, dengan lebih banyak lajur dan baris, dengan data seperti KDNK, jangka hayat, dll.
Nama | Tanah Besar |
---|---|
Namibia | Afrika |
Oman | Asia |
Pakistan | Asia |
-------- | -------------- |
Terima kasih Sohail atas jawapannya, ia berkesan!
P粉5877801032024-03-31 14:54:52
...name LIKE 'N%' OR name LIKE 'O%' OR name LIKE 'P%'
tidak akan menjadi sangat cekap kerana ia akan dianggap secara dalaman sebagai 3 subkueri dengan padanan corak. Tambahan pula, OR menjadikannya perlu untuk enjin menyemak pendua - walaupun kita tahu tiada pendua. Walaupun kebanyakan (tetapi bukan semua) perkara ini akan diperbaiki oleh pengoptimum, adalah lebih baik (dan lebih mudah dibaca) untuk menulis seperti ini:
select * from country where left(name, 1) in 'NOP' order by name
P粉1158400762024-03-31 11:05:36
Ini sepatutnya berkesan kerana anda perlu menulis name LIKE 'N%' OR name LIKE ...
SELECT * FROM country WHERE name LIKE 'N%' OR name LIKE 'O%' OR name LIKE 'P%' ORDER BY name