Untuk memilih penghitung kenaikan di MySQL, pertama-tama Anda perlu mendeklarasikan dan menginisialisasi variabel. Sintaksnya adalah sebagai berikut −
set @anyVariableName=0; select yourColumnName, @anyVariableName:=@anyVariableName+1 as anyVariableName from yourTableName;Untuk memahami sintaks di atas dan menyetel penghitung kenaikan, pertama-tama mari kita buat tabel. Permintaan untuk membuat tabel adalah sebagai berikut
mysql> create table incrementCounterDemo -> ( -> Name varchar(100) -> ); Query OK, 0 rows affected (1.01 sec)_Sisipkan beberapa record dalam tabel menggunakan perintah insert. Kuerinya adalah sebagai berikut
mysql> insert into incrementCounterDemo values('John'); Query OK, 1 row affected (0.18 sec) mysql> insert into incrementCounterDemo values('Carol'); Query OK, 1 row affected (0.20 sec) mysql> insert into incrementCounterDemo values('David'); Query OK, 1 row affected (0.14 sec) mysql> insert into incrementCounterDemo values('Mike'); Query OK, 1 row affected (0.21 sec) mysql> insert into incrementCounterDemo values('Bob'); Query OK, 1 row affected (0.12 sec) mysql> insert into incrementCounterDemo values('Sam'); Query OK, 1 row affected (0.16 sec)Tampilkan semua rekaman dari tabel menggunakan pernyataan pilih. Permintaannya adalah sebagai berikut -
mysql> select *from incrementCounterDemo;Berikut ini adalah outputnya
+-------+ | Name | +-------+ | John | | Carol | | David | | Mike | | Bob | | Sam | +-------+ 6 rows in set (0.00 sec)_Tetapkan variabel
mysql> set @counter=0; Query OK, 0 rows affected (0.00 sec)Sekarang pilih penghitung kenaikan
mysql> select Name, -> @counter:=@counter+1 as IncrementingValuebyOne -> from incrementCounterDemo;_Berikut ini adalah outputnya
+-------+------------------------+ | Name | IncrementingValuebyOne | +-------+------------------------+ | John | 1 | | Carol | 2 | | David | 3 | | Mike | 4 | | Bob | 5 | | Sam | 6 | +-------+------------------------+ 6 rows in set (0.00 sec)Fungsi ROW_NUMBER() di MySQL digunakan untuk mengembalikan nomor urut untuk setiap baris dalam partisinya. Ini adalah semacam fungsi jendela. Nomor baris dimulai dari 1 hingga jumlah baris yang ada di partisi
Perlu dicatat bahwa MySQL tidak mendukung fungsi ROW_NUMBER() sebelum versi 8. 0, tetapi mereka menyediakan variabel sesi yang memungkinkan kita meniru fungsi ini
Sintaksis
Berikut ini adalah sintaks dasar untuk menggunakan ROW_NUMBER() di MySQL
Mari kita tunjukkan dengan menggunakan contoh
Pertama, kita akan membuat tabel bernama "Orang" menggunakan pernyataan di bawah ini
Selanjutnya, diperlukan untuk menambahkan nilai ke tabel ini. Jalankan pernyataan di bawah ini
Selanjutnya, jalankan pernyataan SELECT untuk menampilkan record
Kami akan mendapatkan output, seperti yang ditunjukkan di bawah ini
Sekarang, kita dapat menggunakan fungsi ROW_NUMBER() untuk menetapkan nomor urut untuk setiap record menggunakan pernyataan di bawah ini
Ini akan memberikan output berikut
Sekali lagi, kita dapat menggunakan fungsi ROW_NUMBER() untuk menetapkan nomor urut untuk setiap record dalam partisi menggunakan pernyataan di bawah ini
Ini akan memberikan output seperti di bawah ini di mana dua partisi ditemukan berdasarkan tahun (2015 dan 2016)
MySQL ROW_NUMBER() Menggunakan Variabel Sesi
Kita dapat meniru fungsi ROW_NUMBER() untuk menambahkan nomor baris dalam urutan yang meningkat menggunakan variabel sesi
Jalankan pernyataan di bawah ini yang menambahkan nomor baris untuk setiap baris, yang dimulai dari 1
Dalam pernyataan ini, pertama-tama kita harus menentukan variabel sesi @row_number yang ditunjukkan oleh @prfix dan menetapkan nilainya 0. Kemudian, kami telah memilih data dari tabel Person dan meningkatkan nilai variabel @row_number sebanyak satu ke setiap baris
Setelah eksekusi kueri berhasil, kami akan mendapatkan output seperti di bawah ini
Sekali lagi, kita akan menggunakan variabel sesi sebagai tabel dan menggabungkannya dengan tabel sumber menggunakan pernyataan berikut
Peningkatan otomatis memungkinkan nomor unik dihasilkan secara otomatis saat catatan baru dimasukkan ke dalam tabel
Seringkali ini adalah bidang kunci utama yang ingin kami buat secara otomatis setiap kali catatan baru dimasukkan
Sintaks untuk MySQL
Pernyataan SQL berikut mendefinisikan kolom "Personid" menjadi bidang kunci utama peningkatan otomatis dalam tabel "Orang"
BUAT TABEL Orang (
Personid int NOT NULL AUTO_INCREMENT,
Nama Belakang varchar (255) BUKAN NULL,
varchar Nama Depan (255),
usia int,
KUNCI UTAMA (Personid)
);
MySQL menggunakan kata kunci AUTO_INCREMENT_ untuk melakukan fitur penambahan otomatis
Secara default, nilai awal untuk AUTO_INCREMENT adalah 1, dan akan bertambah 1 untuk setiap record baru
Untuk membiarkan urutan AUTO_INCREMENT dimulai dengan nilai lain, gunakan pernyataan SQL berikut
ALTER TABLE Orang AUTO_INCREMENT=100;
Untuk menyisipkan record baru ke tabel "Persons", kita TIDAK perlu menentukan nilai untuk kolom "Personid" (nilai unik akan ditambahkan secara otomatis)
MASUKKAN KE ORANG (Nama Depan, Nama Belakang)
NILAI ('Lars','Monsen');
Pernyataan SQL di atas akan memasukkan catatan baru ke dalam tabel "Orang". Kolom "Personid" akan diberi nomor berikutnya dari urutan seq_person. Kolom "FirstName" akan disetel ke "Lars" dan kolom "LastName" akan disetel ke "Monsen"