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

Cara Menggabungkan Hasil Dua Query dalam SQL

Masalah:

Anda ingin menampilkan data dari kolom tertentu (dengan tipe data serupa) dari dua tabel di SQL.

Contoh:

Ada dua tabel di database kami:employee dan customer .

employee tabel berisi data dalam kolom berikut:id , nama_depan , nama_belakang , dan usia .

id nama_depan nama_belakang umur
1 Tom Miller 22
2 John Smith 26
3 Lisa Williams 30
4 Charles Davis 21
5 James Moore 22

customer tabel berisi data dalam kolom berikut:id , nama_depan , nama_belakang , dan usia .

id nama_depan nama_belakang umur
1 Milan Smith 45
2 Charles Davis 21
3 Tandai Pendukung 19

Dalam satu kumpulan hasil, mari tampilkan nama depan, nama belakang, dan usia untuk semua orang di database, baik karyawan maupun pelanggan.

Solusi 1:

Kami akan menggunakan UNION ALL untuk menggabungkan data dari kolom dalam dua tabel.

Inilah kueri yang akan Anda tulis:

SELECT first_name, last_name, age FROM employee
UNION ALL
SELECT first_name, last_name, age FROM customer;

Ini hasilnya:

nama_depan nama_belakang umur
Tom Miller 22
John Smith 26
Lisa Williams 30
Charles Davis 21
James Moore 28
Milan Smith 45
Charles Davis 21
Tandai Pendukung 19

Diskusi:

Gunakan klausa UNION ALL untuk menggabungkan data dari kolom dalam dua atau lebih tabel. Dalam contoh kami, kami menggabungkan data dari employee dan customer tabel. Di sebelah kiri kata kunci UNION ALL, letakkan pernyataan SELECT pertama untuk mendapatkan data dari tabel pertama (dalam contoh kita, tabel employee ). Di sebelah kanan, gunakan pernyataan SELECT lain untuk mendapatkan data dari tabel kedua (dalam contoh kita, customer ).

Ingat bahwa data yang dipilih di kedua tabel harus memiliki tipe data yang sama di setiap kolom. Misalnya, jika kolom pertama di SELECT pertama adalah tipe data string, kolom pertama di SELECT kedua juga harus tipe data string. Jika kolom kedua dalam pernyataan SELECT pertama adalah bilangan bulat, kolom kedua pada tabel kedua juga harus bertipe bilangan bulat.

Dalam kueri pertama, kami memilih usia (usia karyawan, yang merupakan tipe data integer) untuk kolom ketiga. Oleh karena itu, kolom ketiga di SELECT kedua juga merupakan nilai integer; ini adalah usia dari pelanggan.

Kolom kedua di kedua pernyataan SELECT adalah tipe data yang sama. Namun, jika nilainya sama di kedua tabel, keduanya akan ditampilkan beberapa kali; misalnya, 'Charles Davis 21' ditampilkan dua kali di kumpulan hasil.

Bagaimana jika tidak ingin beberapa catatan identik di tabel hasil? Dalam hal ini, gunakan UNION . Ini mirip dengan UNION ALL , tetapi menghapus rekaman duplikat. Perhatikan contoh berikut.

Solusi 2:

Berikut kueri yang menghindari catatan duplikat:

SELECT first_name, last_name FROM employee
UNION 
SELECT first_name, last_name FROM customer;

Berikut hasil query di atas:

nama_depan nama_belakang
Tandai Pendukung
James Moore
John Smith
Charles Davis
Milan Smith
Tom Miller
Lisa Williams

Catatan:

UNION ALL lebih cepat dari UNION , tapi UNION menghapus baris duplikat. Pilihannya tergantung pada data hasil yang kita butuhkan.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Anonimkan detail paket Anda secara asli di Plan Explorer

  2. Klausa SQL HAVING untuk Pemula

  3. Bersenang-senang dengan kompresi (penyimpanan kolom) di atas meja yang sangat besar – bagian 3

  4. Cara Membuat Model Database Dari Awal

  5. 3 Tips Teratas yang Perlu Anda Ketahui untuk Menulis Tampilan SQL Lebih Cepat