Apabila menanyakan data, jika tiada operasi pengisihan digunakan, secara lalai SQL akan menyusun hasil pertanyaan mengikut susunan tupel ditambahkan.
Untuk melaksanakan operasi pengisihan dalam SQL, anda boleh menggunakan kata kunci ORDER BY..... Selepas kata kunci ini, anda boleh menambah kata kunci ASC (naik) untuk menunjukkan tertib menaik (dari kecil ke besar) dan DESC (turun) untuk menunjukkan tertib menurun (dari besar ke kecil).
Jika ASC atau DESC tidak ditambah selepas ORDER BY... kata kunci untuk menunjukkan tertib menaik atau menurun, SQL akan lalai kepada tertib ASC menaik. Seperti yang ditunjukkan dalam kod berikut:
SELECT employee_id, last_name, salary FROM employees ORDER BY salary;
Hasil pertanyaan:
[Contoh 1] Soal pekerja dalam jadual pekerja employees
employee_id
, last_name
, salary
dan department_id
mesej. Dan susun mengikut salary
daripada terbesar kepada terkecil (tertib menurun).
SELECT employee_id, last_name, salary FROM employees ORDER BY salary DESC;
Hasil pertanyaan:
Dalam SQL, anda boleh menggunakan medan (lajur) Alias . untuk menyusun. Kerana kadangkala kita perlu mengira medan yang tiada dalam jadual (seperti gaji tahunan annual_salary
), atau sesetengah nama medan terlalu panjang, menggunakan alias pendek boleh meningkatkan kecekapan pengaturcaraan kita. Seperti yang ditunjukkan dalam contoh berikut:
[Contoh] Tanya maklumat employees
, employee_id
, gaji bulanan last_name
dan gaji tahunan salary
pekerja dalam jadual pekerja annual_salary
. Dan susun mengikut annual_salary
daripada terbesar kepada terkecil (tertib menurun).
SELECT employee_id, last_name, salary, salary * (1 + IFNULL(commission_pct, 0) * 12) AS "annual_salary" FROM employees ORDER BY annual_salary DESC;
Hasil pertanyaan:
[Nota]
keperluan format, WHERE
mesti diisytiharkan dalam FROM
Selepas.
alias lajur hanya boleh digunakan dalam ORDER BY...
, bukan dalam WHERE
. **Jika anda menggunakan alias lajur dalam WHERE
, SQL akan melaporkan ralat. Jadi mengapa alias lajur dalam MySQL tidak boleh digunakan dalam WHERE
? Sebabnya adalah seperti berikut:
[Punca]
SELECT employee_id, last_name, department_id FROM employees WHERE department_id IN(50, 60, 70) ORDER BY department_id DESC;
Dalam SQL, susunan pelaksanaan pernyataan pertanyaan tidak mengikut kod di atas daripada baris 1 hingga baris 1 4 baris mengikut urutan dari atas ke bawah. Sebaliknya, mula-mula laksanakan baris 2 DARI... dan mula-mula cari jadual untuk disoal.
Kemudian laksanakan baris 3 WHERE... untuk menapis tupel yang memenuhi syarat.
Kemudian laksanakan baris 1 PILIH... untuk memaparkan medan yang anda ingin tanya. Oleh kerana alias lajur dijana hanya dalam langkah ini, pernyataan WHERE yang disediakannya tidak boleh digunakan dalam langkah sebelumnya. Tetapi ia boleh digunakan dalam langkah seterusnya ORDER BY.
Akhir sekali, baris ke-4 adalah ORDER BY... , diisih mengikut lajur tertentu. Pada masa ini, anda boleh menggunakan alias lajur untuk mengisih.
Hasil pertanyaan:
Dalam kehidupan sebenar, kadangkala kita memerlukan Isih demi satu bidang dan kemudian dengan bidang lain. Dalam SQL kita boleh menggunakan pengisihan sekunder untuk mencapai ini. Sila lihat contoh berikut untuk penggunaan:
[Contoh 1] Tanya ID pekerja employees
, nama employee_id
, gaji bulanan last_name
dan ID jabatan salary
pekerja dalam jadual pekerja department_id
. Mula-mula susun mengikut ID jabatan department_id
dalam tertib menurun, dan kemudian susun mengikut salary
daripada besar ke kecil (urutan menurun).
SELECT employee_id, last_name, salary, department_id FROM employees ORDER BY department_id DESC, salary DESC;
Hasil pertanyaan:
Dan seterusnya, anda boleh menambah koma selepas ORDER BY
untuk mencapai tahap ketiga, tahap keempat... menyusun.
Atas ialah kandungan terperinci Bagaimana untuk mengisih data dalam MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!