Terkadang Anda mungkin perlu membandingkan baris yang berurutan, atau membandingkan setiap baris dengan baris sebelumnya di tabel MySQL. Pada artikel ini, kita akan melihat bagaimana membandingkan dua baris dari tabel yang sama menggunakan self-join. Anda dapat menggunakannya untuk membandingkan baris berurutan atau mendapatkan perbedaan antara dua baris.
Cara membandingkan baris yang berurutan di MySQL
Katakanlah Anda memiliki tabel berikut penjualan (id, order_date, jumlah) dan kolom jumlah berisi total data penjualan kumulatif.
mysql> create table sales(id int auto_increment primary key, order_date date, amount int); mysql> insert into sales(order_date, amount) values('2020-10-01',100), ('2020-10-02',125), ('2020-10-03',140), ('2020-10-04',160); mysql> select * from sales; +------+------------+--------+ | id | order_date | amount | +------+------------+--------+ | 1 | 2020-10-01 | 100 | | 2 | 2020-10-02 | 125 | | 3 | 2020-10-03 | 140 | | 4 | 2020-10-04 | 160 | +------+------------+--------+
Bonus Baca :Cara Membandingkan Dua Kolom di MySQL
Dalam contoh kami, jika Anda ingin mengetahui penjualan yang dilakukan setiap hari, maka Anda perlu membandingkan nilai jumlah setiap baris dengan nilai baris sebelumnya. Berikut query SQL untuk membandingkan setiap baris dengan baris sebelumnya.
mysql> SELECT g1.id, g1.order_date,g1.amount, (g2.amount - g1.amount) AS daily_amount FROM sales g1 INNER JOIN sales g2 ON g2.id = g1.id + 1; +------+------------+--------+--------------+ | id | order_date | amount | daily_amount | +------+------------+--------+--------------+ | 1 | 2020-10-01 | 100 | 25 | | 2 | 2020-10-02 | 125 | 15 | | 3 | 2020-10-03 | 140 | 20 | +------+------------+--------+--------------+
Dalam kueri di atas, kami menggabungkan tabel penjualan dengan dirinya sendiri menggunakan kondisi INNER JOIN g2.id=g1.id + 1 yang memungkinkan Anda membandingkan setiap baris dengan baris sebelumnya.
Bonus Baca :Cara Mendapatkan Setiap Nth Row di MySQL
Harap dicatat, kondisi ini tergantung pada fakta bahwa kolom id kami memiliki nomor berurutan. Sebagian besar tabel memiliki kolom kunci utama kenaikan otomatis sehingga harus berfungsi dalam banyak kasus. Jika mereka berbeda dengan beberapa konstanta lain, Anda dapat memodifikasi kondisi INNER JOIN yang sesuai.
Mudah-mudahan, sekarang Anda dapat dengan mudah membandingkan dua baris dalam tabel yang sama di MySQL.
Ubiq memudahkan untuk memvisualisasikan data, dan memantaunya di dasbor waktu nyata. Coba Ubiq gratis.