Terkadang Anda mungkin perlu menemukan baris yang tidak ada di tabel lain atau memilih baris yang tidak ada di tabel lain. Pada artikel ini, kita akan melihat cara menampilkan baris yang tidak ada di tabel lain di MySQL, menggunakan klausa NOT EXISTS.
klausa MySQL NOT EXISTS
MySQL menyediakan klausa EXISTS, UNION dan NOT EXISTS yang membantu Anda melakukan operasi SET dengan tabel MySQL. Dengan operasi SET, maksud kami adalah Anda dapat memperlakukan tabel MySQL &hasil kueri sebagai kumpulan matematika dan memilih baris yang ada di kedua tabel, atau hanya salah satu tabel. Untuk artikel kami, kami akan menggunakan klausa NOT EXISTS.
Cara Menampilkan Baris yang Tidak Ada di Tabel Lain
Berikut adalah langkah-langkah untuk menemukan baris yang tidak ada di tabel lain. Katakanlah Anda memiliki dua tabel penjualan(id, tanggal_pesanan, jumlah) dan pesanan(id, tanggal_pesanan, jumlah)
mysql> create table sales(id int, order_date date, amount int); mysql> insert into sales(id, order_date, amount) values(1, '2021-01-24',250), (2, '2021-01-25',250), (3, '2021-01-26',250), (4, '2021-01-27',250), (5, '2021-01-28',250), (6, '2021-01-29',250), (7, '2021-01-30',250), (8, '2021-01-31',250), (9, '2021-02-01',250); mysql> select * from sales; +------+------------+--------+ | id | order_date | amount | +------+------------+--------+ | 1 | 2021-01-24 | 250 | | 2 | 2021-01-25 | 250 | | 3 | 2021-01-26 | 250 | | 4 | 2021-01-27 | 250 | | 5 | 2021-01-28 | 250 | | 6 | 2021-01-29 | 250 | | 7 | 2021-01-30 | 250 | | 8 | 2021-01-31 | 250 | | 9 | 2021-02-01 | 250 | +------+------------+--------+ mysql> create table orders(id int, order_date date, amount int); mysql> insert into orders(id, order_date, amount) values(5, '2021-01-28',250), (6, '2021-01-29',250), (7, '2021-01-30',250), (8, '2021-01-31',250), (9, '2021-02-01',250); mysql> select * from orders; +------+------------+--------+ | id | order_date | amount | +------+------------+--------+ | 5 | 2021-01-28 | 250 | | 6 | 2021-01-29 | 250 | | 7 | 2021-01-30 | 250 | | 8 | 2021-01-31 | 250 | | 9 | 2021-02-01 | 250 | +------+------------+--------+
Berikut adalah kueri SQL untuk memilih data dari penjualan tabel yang tidak ada dalam pesanan tabel.
mysql> SELECT * FROM sales D WHERE NOT EXISTS(SELECT * FROM orders c WHERE D.order_date = C.order_date); +------+------------+--------+ | id | order_date | amount | +------+------------+--------+ | 1 | 2021-01-24 | 250 | | 2 | 2021-01-25 | 250 | | 3 | 2021-01-26 | 250 | | 4 | 2021-01-27 | 250 | +------+------------+--------+
Dalam kueri di atas, kami menggunakan klausa NOT EXISTS untuk memilih baris dari penjualan tabel yang tidak ada dalam pesanan tabel, yang dipilih menggunakan subquery. Di subkueri, kami hanya memilih baris tersebut dari pesanan tabel yang tanggal_pesanan sama seperti di penjualan tabel.
Butuh alat pelaporan untuk MySQL? Ubiq memudahkan untuk memvisualisasikan data dalam hitungan menit, dan memantau di dasbor waktu nyata. Cobalah Hari ini!