Mengisih Mengikut Ungkapan dan Alias
Tempat rujukan alias dibenarkan dalam ORDER BY dan cara mengisih mengikut logik terhitung
Mengisih Mengikut Ungkapan dan Alias ialah pelajaran Persediaan Temu Duga SQL percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Persediaan Temu Duga SQL, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Persediaan Temu Duga SQL merangkumi sejumlah 4 pelajaran.
ORDER BY Lebih Fleksibel daripada yang Anda Sangka
Ramai calon secara mengejut percaya bahawa ORDER BY hanya boleh merujuk lajur biasa. Sebenarnya, Anda boleh mengisih berdasarkan ungkapan, nama alternatif, kedudukan lajur dan logik CASE.
Penemuduga menggunakan perkara ini untuk menguji sama ada Anda memahami tertib pelaksanaan pertanyaan secara logik, kerana ORDER BY dijalankan selepas SELECT, dan itulah sebabnya nama alternatif berfungsi di sini tetapi tidak dalam WHERE.
Mengapa Nama Alternatif Sah dalam ORDER BY
Ingat tertib pelaksanaan secara logik: FROM, WHERE, GROUP BY, HAVING, SELECT, kemudian ORDER BY. Oleh sebab SELECT dijalankan sebelum ORDER BY, nama alternatif lajur yang Anda tetapkan dalam SELECT sudah wujud apabila ORDER BY dinilai.
Itulah sebab tepat nama alternatif berfungsi dalam ORDER BY tetapi gagal dalam WHERE, iaitu soalan yang sering dikaitkan semula oleh penemuduga dengan tertib pelaksanaan.
SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY annual_pay DESC;Mengisih Mengikut Ungkapan Mentah
Anda juga boleh mengulangi ungkapan penuh dalam ORDER BY dan bukannya menggunakan nama alternatif. Kedua-duanya sah dan hasilnya sama.
Menggunakan nama alternatif lebih kemas dan mengelakkan penduaan logik, tetapi sesetengah pasukan lebih suka ungkapan yang dinyatakan secara jelas untuk kejelasan. Kedua-dua jawapan boleh diterima dalam temu duga selagi Anda boleh memberikan justifikasi.
SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY salary * 12 DESC;Mengisih Mengikut Kedudukan Lajur (Ordinal)
Anda boleh mengisih berdasarkan kedudukan ordinal sesuatu item dalam senarai pemilihan: ORDER BY 2 mengisih berdasarkan lajur kedua yang dipilih. Kaedah ini ringkas tetapi rapuh kerana menyusun semula senarai SELECT secara senyap mengubah isihan.
Nasihat temu duga: ketahui bahawa ciri ini wujud dan secara umumnya tidak digalakkan dalam kod persekitaran sebenar demi kebolehbacaan dan keselamatan.
SELECT name, hire_date
FROM employees
ORDER BY 2 DESC;Mengisih Mengikut CASE Terhitung
Corak yang berkuasa ialah mengisih mengikut ungkapan CASE untuk mengenakan susunan tersuai yang bukan mengikut abjad. Di sini, kami memaparkan penerima gaji tinggi dahulu menggunakan keutamaan terbitan.
CASE menghasilkan kedudukan isihan yang tidak mempunyai lajur tersendiri; enjin menilainya semata-mata untuk tujuan susunan.
SELECT name, salary
FROM employees
ORDER BY CASE WHEN salary >= 100000 THEN 0 ELSE 1 END,
salary DESC;Susunan Kategori Tersuai
Lajur status jarang diisih dengan munasabah mengikut abjad. "aktif, menunggu, ditutup" mengikut abjad menjadi "aktif, ditutup, menunggu", yang salah. CASE memetakan setiap nilai kepada kedudukan yang ditentukan dengan sengaja.
Ini ialah keperluan pelaporan yang kerap berlaku dan cara yang kemas untuk menunjukkan bahawa Anda boleh mengawal susunan melangkaui isihan semula jadi.
SELECT id, status
FROM orders
ORDER BY CASE status
WHEN 'active' THEN 1
WHEN 'pending' THEN 2
WHEN 'closed' THEN 3
ELSE 4
END;Mengisih Mengikut Hasil Fungsi
Mana-mana fungsi skalar boleh digunakan dalam ORDER BY. Contohnya, isih tanpa membezakan huruf besar dan kecil menggunakan LOWER, atau isih berdasarkan panjang rentetan atau bahagian tarikh.
Perhatikan: membungkus lajur dalam fungsi semasa mengisih boleh menghalang enjin daripada menggunakan indeks pada lajur tersebut, sama seperti yang berlaku dalam WHERE.
SELECT name
FROM employees
ORDER BY LOWER(name) ASC;Nama Alternatif berbanding Agregat dalam Pertanyaan GROUP BY
Dalam pertanyaan berkumpulan, Anda sering mengisih berdasarkan agregat. Anda boleh merujuk nama alternatif agregat dalam ORDER BY, sekali lagi kerana SELECT dijalankan dahulu.
Pertanyaan di bawah mengira pesanan bagi setiap pelanggan dan mengisih berdasarkan kiraan itu secara menurun, menggunakan nama alternatif order_count.
SELECT customer_id, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id
ORDER BY order_count DESC;Perangkap Pertembungan Nama Alternatif
Kes khas yang digemari penemuduga: bagaimana jika nama alternatif Anda sama dengan nama lajur sebenar? Kebanyakan enjin mentafsir nama tunggal dalam ORDER BY sebagai nama alternatif senarai pemilihan dahulu, yang boleh mengejutkan Anda.
Jika Anda memberikan nama alternatif salary * 2 AS salary dan kemudian menggunakan ORDER BY salary, Anda mengisih berdasarkan nilai yang digandakan, bukan lajur asas. Elakkan menggunakan semula nama lajur sebagai nama alternatif untuk menghindari kekaburan ini.
SELECT salary * 2 AS salary
FROM employees
ORDER BY salary;Menggabungkan Ungkapan dan Arah Susunan
Anda boleh mencampurkan semua ini dalam satu klausa: satu ungkapan, kemudian nama alternatif, kemudian lajur biasa, setiap satu dengan arahnya sendiri. Contoh ini mengisih berdasarkan aras bonus terhitung secara menurun, kemudian berdasarkan nama secara menaik sebagai pemutus seri.
Melapiskan kunci seperti ini ialah asas utama pertanyaan pelaporan sebenar.
SELECT name, salary,
salary * 0.1 AS bonus
FROM employees
ORDER BY bonus DESC, name ASC;Perkara yang Perlu Diberi Perhatian tentang Keserasian
Walaupun ungkapan dan nama alternatif dalam ORDER BY disokong secara meluas, terdapat beberapa perkara untuk temu duga:
- Kedudukan mengikut nombor (
ORDER BY 2) ialah piawai tetapi tidak digalakkan. - Keterlihatan nama alternatif dalam
ORDER BYadalah konsisten merentas enjin utama, tidak seperti dalamWHERE/HAVING. SELECT DISTINCTmengenakan had: Anda hanya boleh menggunakanORDER BYpada ungkapan yang muncul dalam senarai pemilihan.
Semakan Pantas
Hubungkan keterlihatan alias dengan urutan pelaksanaan.
Imbas Kembali
Pengisihan berdasarkan ungkapan dan alias:
ORDER BYmenerima alias, ungkapan mentah, fungsi, logikCASEdan kedudukan bernombor.- Alias berfungsi kerana
ORDER BYdilaksanakan selepasSELECTmengikut urutan logik. - Gunakan
CASEuntuk pengisihan kategori tersuai. - Elakkan nama alias yang bertindih dengan lajur sebenar bagi mengelakkan kekaburan.
- Fungsi dalam kunci pengisihan boleh menyebabkan indeks tidak digunakan.
Pelajari SQL dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “Mengisih Mengikut Ungkapan dan Alias” percuma?
Ya — teks penuh “Mengisih Mengikut Ungkapan dan Alias” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Persediaan Temu Duga SQL, tingkat taraf kepada CoddyKit PRO. Kursus Persediaan Temu Duga SQL merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Mengisih Mengikut Ungkapan dan Alias”?
Tempat rujukan alias dibenarkan dalam ORDER BY dan cara mengisih mengikut logik terhitung Anda berlatih Persediaan Temu Duga SQL menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Persediaan Temu Duga SQL?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Persediaan Temu Duga SQL di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Mengisih Mengikut Ungkapan dan Alias” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Persediaan Temu Duga SQL ini?
Ya. Setiap pelajaran Persediaan Temu Duga SQL menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Pengisihan Pelbagai Lajur dan Peletakan NULL
- LIMIT, OFFSET dan FETCH FIRST
- Mengembalikan Baris Teratas-N Dengan Boleh Dipercayai
- Mengisih Mengikut Ungkapan dan Alias