Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Bagaimana Membandingkan Dua Baris dari Tabel yang Sama

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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Menangani Pembagian dengan Nol Dalam SQL

  2. Tren Perangkat Keras dan Infrastruktur Basis Data

  3. Mengumumkan Ketersediaan Umum SQL Safe Backup 8.7.2

  4. Menggunakan strace sebagai Alat Debugging DG40DBC di Linux

  5. SQL Pilih Berbeda