Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana Membandingkan Dua Tabel di MySQL

Terkadang Anda mungkin perlu membandingkan dua tabel di MySQL untuk menemukan catatan yang cocok atau catatan yang tidak cocok. Berikut query SQL untuk membandingkan dua tabel di MySQL.

Cara Membandingkan Dua Tabel di MySQL

Berikut adalah langkah-langkah untuk membandingkan dua tabel di MySQL. Ada kasus penggunaan yang berbeda untuk membandingkan dua tabel dalam SQL. Kita akan melihat masing-masing satu per satu. Katakanlah Anda memiliki 2 tabel berikut pesanan(id, tanggal_pesanan, jumlah) dan pesanan2(id, tanggal_pesanan, jumlah) yang memiliki 2 record identik.

mysql> create table orders(id int, order_date date, amount int);

mysql> insert into orders(id, order_date, amount)
     values(1,'2020-07-25',250),
     (2,'2020-07-26',350),
     (3,'2020-07-27',200),
     (4,'2020-07-28',150);

mysql> select * from orders;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    1 | 2020-07-25 |    250 |
|    2 | 2020-07-26 |    350 |
|    3 | 2020-07-27 |    200 |
|    4 | 2020-07-28 |    150 |
+------+------------+--------+

mysql> create table orders2(id int, order_date date, amount int);

mysql> insert into orders2(id, order_date, amount)
     values(3,'2020-07-27',200),
     (4,'2020-07-28',150),
     (5,'2020-07-29',250),
     (6,'2020-07-30',300);

mysql> select * from orders2;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    3 | 2020-07-27 |    200 |
|    4 | 2020-07-28 |    150 |
|    5 | 2020-07-29 |    250 |
|    6 | 2020-07-30 |    300 |
+------+------------+--------+

Bonus Baca :Cara Mendapatkan Data Satu Bulan Terakhir di MySQL

MySQL Bandingkan Dua Kolom dari tabel yang berbeda

Katakanlah Anda hanya ingin membandingkan dua kolom (misalnya id) dari dua tabel pesanan yang berbeda dan pesanan2. Berikut query SQL untuk membandingkan dua kolom dari tabel yang berbeda dan memilih record yang cocok.

mysql> select * from orders
       where id in
       (select id from orders2);
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    3 | 2020-07-27 |    200 |
|    4 | 2020-07-28 |    150 |
+------+------------+--------+

Dalam kueri di atas, kami memilih catatan dari pesanan yang id nilai kolom ada dalam daftar id nilai kolom yang diperoleh dari orders2 menggunakan subquery.

Demikian pula, jika Anda ingin membandingkan dua kolom dan memilih catatan yang tidak cocok, perbarui kueri di atas dengan menambahkan kata kunci NOT sebelum IN, seperti yang ditunjukkan di bawah ini.

mysql> select * from orders
            where id NOT in
            (select id from orders2);
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    1 | 2020-07-25 |    250 |
|    2 | 2020-07-26 |    350 |
+------+------------+--------+

Bonus Baca :Cara Menyalin Tabel di MySQL

MySQL Bandingkan Dua tabel untuk Menemukan Catatan yang Cocok

Jika Anda ingin membandingkan dua tabel dan menemukan catatan yang cocok berdasarkan beberapa kolom, maka inilah kueri SQL. Katakanlah Anda ingin menemukan catatan yang identik dengan membandingkan beberapa kolom id, order_date, jumlah

Pertama, kita melakukan UNION ALL dari dua tabel untuk mempertahankan baris duplikat.

mysql> select id, order_date, amount
     from orders
     union all
     select id, order_date, amount
     from orders2;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    1 | 2020-07-25 |    250 |
|    2 | 2020-07-26 |    350 |
|    3 | 2020-07-27 |    200 |
|    4 | 2020-07-28 |    150 |
|    3 | 2020-07-27 |    200 |
|    4 | 2020-07-28 |    150 |
|    5 | 2020-07-29 |    250 |
|    6 | 2020-07-30 |    300 |
+------+------------+--------+

Selanjutnya, kita melakukan GROUP BY untuk menghitung record berdasarkan id, order_date dan jumlah kolom untuk mencari record dengan count>1, yaitu record yang muncul lebih dari satu kali. Kami menggunakan kueri di atas sebagai subkueri.

mysql> select id, order_date, amount
       from (
           select id, order_date, amount
           from orders
           union all
           select id, order_date, amount
           from orders2)
       temp
       group by id, order_date, amount
       having count(*)>1;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    3 | 2020-07-27 |    200 |
|    4 | 2020-07-28 |    150 |
+------+------------+--------+

Bonus Baca :Cara Menambahkan batasan NOT NULL di MySQL

MySQL Bandingkan Dua Tabel untuk Menemukan record yang tidak cocok

Demikian pula, inilah cara membandingkan dua tabel untuk menemukan kolom yang tidak cocok di MySQL. Dalam query di atas, daripada menggunakan count(*)>1, kita menggunakan kondisi count(*)=1, yaitu record yang hanya muncul sekali.

Berikut SQL untuk membandingkan dua tabel dan menemukan catatan tanpa kecocokan.

mysql> select id, order_date, amount
       from (
         select id, order_date, amount
         from orders
         union all
         select id, order_date, amount
         from orders2)
       temp
       group by id, order_date, amount
      having count(*)=1;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    1 | 2020-07-25 |    250 |
|    2 | 2020-07-26 |    350 |
|    5 | 2020-07-29 |    250 |
|    6 | 2020-07-30 |    300 |
+------+------------+--------+

Bonus Baca :Cara Menambahkan Batasan Default di MySQL

MySQL membandingkan dua tabel dari database yang berbeda

Demikian pula, jika Anda ingin membandingkan dua tabel pesanan dan pesanan2 dari database yang berbeda db1 dan db2 masing-masing, cukup awali nama database sebelum nama tabel dengan titik (.)

Berikut query SQL untuk membandingkan dua tabel dari database yang berbeda dan mendapatkan record yang cocok.

mysql> select id, order_date, amount
       from (
           select id, order_date, amount
           from db1.orders
           union all
           select id, order_date, amount
           from db2.orders2)
       temp
       group by id, order_date, amount
       having count(*)>1;

Dan inilah kueri SQL untuk membandingkan dua tabel dari database yang berbeda dan mendapatkan catatan yang tidak cocok.

mysql> select id, order_date, amount
       from (
           select id, order_date, amount
           from db1.orders
           union all
           select id, order_date, amount
           from db2.orders2)
       temp
       group by id, order_date, amount
       having count(*)>1;

Mudah-mudahan, sekarang Anda dapat membandingkan dua tabel di MySQL

Ubiq memudahkan untuk memvisualisasikan data dalam hitungan menit, dan memantau di dasbor waktu nyata. Cobalah Hari ini!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Posting dan dapatkan secara bersamaan di php

  2. Cara Membuat Tabel di SQL – Postgres dan Contoh Query MySQL

  3. MySQL Query GROUP MENURUT hari / bulan / tahun

  4. Memasukkan data menggunakan mysqli

  5. MySQL - hitung jumlah total baris di php