Fungsi Tetingkap MySQL Row Number

Mysql Row Number Window Function



Dalam MySQL, kaedah ROW NUMBER () mengandungi nombor kronologi untuk setiap baris di dalam partisi. Ini hanya ciri tetingkap. Angka baris bermula pada 1 dengan angka baris dalam partisi. Ingat, sebelum versi 8.0, MySQL tidak membenarkan fungsi ROW NUMBER (), namun ia menawarkan pemboleh ubah sesi yang menolong seseorang meniru ciri ini. Kami akan memahami lebih banyak mengenai fungsi MySQL ROW NOMOR () sepanjang panduan ini dan menghasilkan nombor berturut-turut untuk setiap baris dalam koleksi hasil. Dalam MySQL, kaedah ROW_NUMBER () digunakan dengan salah satu klausa berikutnya:

  • Klausa Over () akan digunakan di dalamnya.
  • Klausa PESANAN MENGIKUT hasilnya mengikut urutan penyusunan lajur yang disebutkan.

Sintaks:

>> PILIH nama_kol,ROW_NUMBER()KESELURUHAN( BAHAGIAN MENGIKUT nama_kol, PERINTAH OLEH nama_kol) SEBAGAI baris_num DARI nama_nama meja;

Mari kita buka shell pelanggan baris perintah MySQL dari aplikasi dan taip kata laluan untuk log masuk.









Anda harus membuat jadual baru atau menggunakan jadual lalai untuk mula mengerjakan fungsi nombor baris. Seperti yang ditunjukkan dalam gambar di bawah, kami memiliki haiwan tabel dalam data skema dengan beberapa catatan di dalamnya. Mari ambil rekodnya menggunakan arahan SELECT.



>> PILIH * DARI data .anim;





Contoh 01: ROW_NUMBER () Menggunakan PESANAN OLEH Klausa

Kami akan menggunakan jadual yang sama untuk menghuraikan beberapa contoh fungsi nombor baris. Kami mengambil contoh fungsi ROW_NUMBER () diikuti oleh Over (), sementara hanya menggunakan klausa ORDER BY. Kami telah mengambil semua rekod sambil membilang baris mengikut turutan Harga lajur. Kami telah memberikan nama baris_num pada lajur, yang akan menyimpan nombor baris. Mari cuba arahan di bawah untuk melakukannya.

>> PILIH *,ROW_NUMBER()KESELURUHAN( PERINTAH OLEH Harga) SEBAGAI baris_num DARI data .anim;

Setelah menjalankan pertanyaan di atas, kita dapat melihat bahawa baris telah ditetapkan dengan nombor mengikut urutan penyusunan lajur Harga. Anda mungkin berpendapat bahawa beberapa harga yang lebih kecil mestilah berada di bahagian atas lajur dan harganya sesuai mengikutnya. Tetapi klausa ORDER BY hanya melihat digit pertama atau abjad lajur untuk menyusun nilai.



Mari jalankan pertanyaan yang sama diikuti dengan klausa ORDER BY semasa menggunakan susunan penyusun lajur Age. Output akan diberikan mengikut lajur Age.

>> PILIH *,ROW_NUMBER()KESELURUHAN( PERINTAH OLEH Umur) SEBAGAI baris_num DARI data .anim;

Contoh 02: ROW_NUMBER () Menggunakan BAHAGIAN MENGIKUT Klausa

Kami akan menggunakan satu-satunya klausa PARTISI OLEH dalam pertanyaan ROW_NUMBER () untuk memeriksa hasilnya. Kami telah menggunakan query SELECT untuk mengambil catatan diikuti dengan klausa ROW_NUMBER () dan OVER, sambil membahagikan jadual mengikut kolom Warna. Jalankan perintah di bawah yang dilampirkan di shell perintah.

>> PILIH *,ROW_NUMBER()KESELURUHAN( BAHAGIAN MENGIKUT Warna) SEBAGAI baris_num DARI data .anim;

Anda dapat melihat hasilnya bahawa penomboran baris telah ditetapkan dalam partisi, mengikut urutan penyusun warna. Oleh kerana kita mempunyai 4 nilai untuk warna Hitam yang memerlukan 4 baris. Itulah sebabnya ia mendapat nombor empat baris bermula dari 1 hingga 4 dan sebaliknya.

Cubalah contoh yang sama, dipisahkan oleh lajur Jantina kali ini. Seperti yang kita tahu, kita hanya mempunyai dua jantina dalam jadual ini, sebab itulah 2 partisi akan terbentuk. Perempuan menempati 9 baris, itulah sebabnya ia mempunyai angka dari 1 hingga 9. Sementara lelaki mempunyai 8 nilai, itulah sebabnya ia mempunyai 1 hingga 8.

>> PILIH *,ROW_NUMBER()KESELURUHAN( BAHAGIAN MENGIKUT Jantina) SEBAGAI baris_num DARI data .anim;

Contoh 03: ROW_NUMBER () Menggunakan PARTITION BY & ORDER BY

Kami telah melakukan dua contoh di atas dalam baris perintah MySQL, sekarang saatnya untuk melakukan contoh ROW_NUMBER () di MySQL Workbench 8.0. Oleh itu, buka MySQL Workbench 8.0 dari aplikasi. Sambungkan MySQL Workbench dengan pangkalan data root host tempatan untuk mula berfungsi.

Di sebelah kiri MySQL Workbench, anda akan menemui bar Schema, meniup navigator. Di bar Skema ini, anda akan menemui senarai pangkalan data. Di bawah senarai pangkalan data, anda akan mempunyai jadual dan prosedur yang berbeza, seperti yang anda lihat pada gambar di bawah. Kami mempunyai jadual yang berbeza dalam 'data' pangkalan data kami. Kami akan membuka tabel 'order1' menggunakan perintah SELECT di area pertanyaan untuk mulai menggunakannya untuk pelaksanaan fungsi ROW_NUMBER ().

>> PILIH * DARI data .order1;

Susunan jadual1 telah ditunjukkan dalam paparan grid seperti gambar di bawah. Anda dapat melihatnya mempunyai 4 bidang kolom, id, Wilayah, Status, dan OrderNo. Kami akan mengambil semua rekod jadual ini semasa menggunakan klausa ORDER BY dan PARTITION BY, keduanya pada masa yang sama.

Di kawasan pertanyaan MySQL Workbench 8.0, taipkan pertanyaan yang ditunjukkan di bawah. Pertanyaan telah dimulakan dengan klausa SELECT, mengambil semua rekod diikuti dengan fungsi ROW_NUMBER () bersama dengan klausa OVER. Selepas klausa OVER, kami telah menentukan lajur Status yang diteruskan oleh pernyataan PARTITION BY untuk membahagikan jadual menjadi partisi mengikut jadual ini. Klausa ORDER BY digunakan untuk menyusun jadual dengan cara menurun mengikut lajur Wilayah. Nombor baris akan disimpan di lajur baris_num. Ketuk ikon denyar untuk melaksanakan perintah ini.

Hasil yang ditunjukkan di bawah akan ditunjukkan. Pertama sekali, jadual telah dipisahkan menjadi dua bahagian mengikut nilai Status lajur. Setelah itu, ia telah dipaparkan dalam urutan menurun kolom 'Wilayah' dan partisi telah diberikan dengan nombor baris.

Kesimpulan:

Akhirnya, kami telah menyelesaikan semua contoh yang diperlukan dalam menggunakan fungsi ROW_NUMBER () di MySQL Workbench dan MySQL Command-line Client Shell.