Lewati ke konten utama

UNION vs UNION ALL di SQL

Temukan perbedaan keluaran dan performa antara UNION dan UNION ALL: UNION menghapus duplikasi sementara UNION ALL menyertakannya.
Diperbarui 5 Jun 2026  · 8 mnt baca

Di dunia SQL, kemampuan untuk menggabungkan data dari beberapa kueri adalah kebutuhan mendasar, dan SQL menyediakan fungsi kuat seperti UNION dan UNION ALL untuk mencapainya. 

Seperti yang akan Anda lihat, memahami perbedaan halus antara fungsi UNION dan UNION ALL dalam SQL sangat penting untuk kueri dan pengelolaan data yang efisien. Tutorial ini menjelaskan persamaan, perbedaan, dan skenario penggunaannya menggunakan dataset pendamping untuk membantu Anda mengoptimalkan kueri SQL.

Jawaban Singkat: SQL UNION vs. UNION ALL 

Perbedaan utamanya adalah UNION menghapus catatan duplikat, sedangkan UNION ALL menyertakan semua duplikasi. Perbedaan ini tidak hanya mengubah jumlah baris dalam hasil kueri, tetapi juga berdampak pada performa.

Fitur UNION UNION ALL
Duplikasi Menghapus catatan duplikat Menjaga semua catatan (termasuk duplikat)
Performa Lebih lambat (Harus mengurutkan/meng-hash data untuk menemukan duplikat) Lebih cepat (Langsung menambahkan data ke hasil)
Operasi Teori Himpunan (Union matematis) Menambahkan / Menumpuk Hasil

Mari pertimbangkan dua tabel contoh, employees_2023 dan employees_2024, yang merepresentasikan catatan karyawan untuk dua tahun berbeda.

SELECT *
FROM employees_2023

employee_id

name

department

1

Alice

HR

2

Bob

IT

3

Charlie

Finance

SELECT *
FROM employees_2024

employee_id

name

department

2

Bob

IT

3

Charlie

Finance

4

David

Marketing

Sekarang, mari gabungkan kedua tabel menggunakan fungsi UNION.

SELECT employee_id, name, department FROM employees_2023 
UNION 
SELECT employee_id, name, department FROM employees_2024;

employee_id

name

department

1

Alice

HR

2

Bob

IT

3

Charlie

Finance

4

David

Marketing

Pada hasil ini, catatan duplikat dihapus. Sekarang, bandingkan dengan hasil setelah menggunakan UNION ALL.

SELECT employee_id, name, department FROM employees_2023 
UNION ALL 
SELECT employee_id, name, department FROM employees_2024;

employee_id

name

department

1

Alive

HR

2

Bob

IT

3

Charlie

Finance

2

Bob

IT

3

Charlie

Finance

4

David

Marketing

Pada hasil ini, semua catatan disertakan, dan duplikat tidak dihapus.

Apa itu UNION dalam SQL?

Fungsi UNION menggabungkan hasil dari dua atau lebih kueri SELECT ke dalam satu himpunan hasil, sekaligus menghapus baris duplikat. Setiap pernyataan SELECT dalam UNION harus memiliki jumlah kolom yang sama. Selain itu, tipe datanya harus serupa, dan urutan kolom juga harus sama. Untuk memahami fungsi ini, mari buat dua tabel contoh di bawah.

CREATE TABLE sales_team (
    employee_id INT,
    employee_name VARCHAR(50)
);
INSERT INTO sales_team (employee_id, employee_name) VALUES
(1, 'Alice'),
(2, 'Bob'),
(3, 'Charlie');
CREATE TABLE support_team ( 
employee_id INT, 
employee_name VARCHAR(50)
 );
INSERT INTO support_team (employee_id, employee_name) VALUES 
(3, 'Charlie'), 
(4, 'David'), 
(5, 'Eve');

Kode di atas akan membuat dua tabel yang akan kita gunakan dalam tutorial ini, masing-masing sales_team dan support_team. Anda dapat melihat tabelnya menggunakan kode di bawah.

SELECT * 
FROM sales_team

Records in the <code624

Catatan dalam tabel sales_team. Gambar oleh Penulis 

SELECT * 
FROM support_team

Records in the <code624

Catatan dalam tabel support_team. Gambar oleh Penulis 

Ini adalah tabel kecil dengan masing-masing tiga catatan, dan nama kolomnya sudah jelas. Sekarang kedua tabel telah dibuat, mari terapkan fungsi UNION.

SELECT employee_id, employee_name
    FROM sales_team
   UNION
SELECT employee_id, employee_name
    FROM support_team;

Output from the <code624

Keluaran dari fungsi UNION. Gambar oleh Penulis 

Anda dapat melihat bahwa entri duplikat dari employee_id dengan nilai 3 dihapus. 

Apa Saja Use Case untuk UNION dalam SQL?

Berikut beberapa use case umum untuk fungsi UNION.

  • Menggabungkan Hasil dari Tabel Berbeda: Saat Anda ingin menggabungkan data dari beberapa tabel dan memastikan tidak ada catatan duplikat, UNION adalah fungsi andalan.

  • Menangani Sumber Data Berbeda: UNION berguna saat menggabungkan tabel dari berbagai sumber data. 

  • Menghapus Duplikasi di Antara Kueri: Saat Anda ingin memastikan keunikan himpunan hasil gabungan, gunakan UNION.

Apa itu UNION ALL dalam SQL?

Fungsi UNION ALL menggabungkan hasil dari dua atau lebih kueri SELECT, termasuk semua baris duplikat. Fungsi ini lebih cepat dibanding UNION karena tidak menghapus duplikasi.

SELECT employee_id, employee_name
    FROM sales_team
UNION ALL
SELECT employee_id, employee_name
    FROM support_team;

Output from the <code624

Keluaran dari fungsi UNION ALL. Gambar oleh Penulis 

Anda dapat melihat bahwa, dalam kasus ini, entri duplikat diulang dan tidak dihapus.

Apa Saja Use Case untuk UNION ALL dalam SQL?

Berikut beberapa use case umum untuk fungsi UNION ALL.

  • Menggabungkan Hasil dengan Duplikasi: Gunakan UNION ALL saat Anda perlu menggabungkan hasil dari beberapa kueri dan mempertahankan semua baris duplikat.
  • Pertimbangan Performa: UNION ALL lebih efisien waktu dibanding fungsi UNION, karena tidak memerlukan langkah tambahan untuk menghapus duplikasi.
  • Mengagregasikan Data dari Periode Berbeda: Saat mengagregasikan data dari periode atau sumber berbeda, dan Anda perlu mempertahankan entri duplikat, UNION ALL lebih disukai.
  • Pelaporan dan Analisis: Untuk kebutuhan pelaporan di mana setiap catatan, termasuk duplikat, diperlukan, UNION ALL cocok digunakan.

UNION dan UNION ALL: Persamaan dan Perbedaan

Mari buat tabel ringkasan mengenai persamaan dan perbedaannya. 

Fitur

UNION

UNION ALL

Baris duplikat

Dihapus

Disertakan

Performa

Lebih lambat

Lebih cepat

Use case

Saat Anda memerlukan catatan unik

Saat Anda memerlukan semua catatan

Ukuran hasil

Lebih kecil

Lebih besar

Perbedaan Sintaks UNION dan UNION ALL di Berbagai Dialek SQL 

Walaupun sintaks dasar tetap sama di berbagai dialek SQL, ada sedikit variasi tergantung platform. Jika Anda melihat kodenya, maka di sebagian besar platform seperti SQL Server, Oracle, MySQL, PostgreSQL, atau BigQuery, kodenya akan tampak serupa dengan yang ditunjukkan di bawah ini. 

SELECT employee_id, employee_name
    FROM sales_team
UNION ALL
SELECT employee_id, employee_name
    FROM support_team;

Perintah dasar dalam dialek SQL ini tetap sama, dengan beberapa nuansa dan perbedaan:

  1. Penanganan NULL dan Kolasi: Berbagai dialek SQL dapat memiliki aturan berbeda untuk menangani nilai NULL dan kolasi string.
  2. Optimisasi Performa: Optimisasi performa dan efisiensi eksekusi bisa bervariasi.
  3. Penanganan Error dan Peringatan: Dialek yang berbeda dapat menangani error dan peringatan secara berbeda saat menggunakan fungsi ini.
  4. Fungsi dan Fitur Spesifik Platform: Beberapa dialek SQL mungkin menawarkan fungsi atau fitur tambahan yang dapat digunakan bersama UNION dan UNION ALL untuk skenario yang lebih kompleks.

Perintahnya berbeda cukup signifikan dalam kasus PySpark, yang beroperasi di lingkungan terdistribusi. Kodenya diberikan di bawah, dengan asumsi df1 dan df2 adalah nama dua data frame yang berisi dua tabel yang kita buat di atas. :

df1.union(df2)

3 Aturan dan Kesalahan Umum Saat Menggunakan SQL UNION

Walaupun UNION dan UNION ALL kuat, keduanya ketat terkait sintaks. Jika kueri Anda menghasilkan error, kemungkinan melanggar salah satu dari tiga aturan emas ini.

1. Ketidakcocokan Jumlah Kolom

Kesalahan paling umum yang ditemui pengguna adalah ketidakcocokan jumlah kolom. Untuk menggabungkan dua dataset, "bentuk" tabel harus identik. Anda tidak bisa menumpuk tabel dengan 3 kolom di atas tabel dengan 2 kolom.

Kesalahannya:

-- Ini akan gagal karena jumlah kolom tidak cocok
SELECT employee_id, name, department 
FROM employees_2023
UNION
SELECT employee_id, name 
FROM employees_2024;

Perbaikannya: Pastikan kedua pernyataan SELECT meminta jumlah kolom yang persis sama. Jika tabel kedua kekurangan data (seperti department), Anda dapat memilih NULL sebagai placeholder agar jumlahnya cocok:

SELECT employee_id, name, department FROM employees_2023
UNION
SELECT employee_id, name, NULL as department FROM employees_2024;

2. Kompatibilitas Tipe Data

SQL menggabungkan hasil berdasarkan posisi, bukan nama kolom. Tipe data kolom pertama pada kueri pertama Anda harus cocok (atau kompatibel) dengan tipe data kolom pertama pada kueri kedua Anda.

Kesalahannya: Jika Anda secara tidak sengaja menukar urutan kolom, SQL mencoba menumpuk Angka (ID) di atas String (Nama), yang menyebabkan error konversi tipe data.

-- Ini gagal karena Kolom 1 (ID - INT) tidak bisa digabung dengan Kolom 1 (Name - VARCHAR)
SELECT employee_id, name FROM employees_2023
UNION
SELECT name, employee_id FROM employees_2024;

Perbaikannya: Selalu pastikan bahwa kolom Anda dicantumkan dalam urutan yang persis sama di setiap pernyataan SELECT dalam UNION.

3. Batasan ORDER BY

Salah satu hal yang sering membingungkan adalah di mana menempatkan klausa ORDER BY. Anda tidak dapat mengurutkan sub-kueri individual di dalam operasi UNION; Anda hanya dapat mengurutkan hasil gabungan akhir.

Kesalahannya: Menggunakan ORDER BY sebelum kueri akhir akan memunculkan error sintaks.

-- SINTAKS YANG TIDAK BENAR
SELECT employee_id, name FROM employees_2023 
ORDER BY employee_id -- Anda tidak bisa mengurutkan di sini!
UNION
SELECT employee_id, name FROM employees_2024;

Perbaikannya: Tempatkan klausa ORDER BY di bagian paling akhir kueri Anda. Ini menerapkan pengurutan pada keseluruhan himpunan hasil gabungan.

-- SINTAKS YANG BENAR
SELECT employee_id, name FROM employees_2023
UNION
SELECT employee_id, name FROM employees_2024
ORDER BY employee_id; -- Mengurutkan hasil akhir

Penutup

Penting untuk memahami penerapan UNION dibanding UNION ALL dalam mengelola data secara efisien menggunakan SQL. Jika UNION hanya memilih catatan unik, UNION ALL memilih semuanya, sehingga memengaruhi performa dan ukuran himpunan hasil. Gunakan pengetahuan ini untuk memilih fungsi yang tepat sesuai kebutuhan spesifik Anda. 

Untuk pembelajaran lebih lanjut, pertimbangkan untuk mengeksplorasi sumber berikut:

  • Pengantar SQL: Pelajari cara membuat dan mengkueri basis data relasional menggunakan SQL.
  • Dasar-dasar SQL: Kuasai keterampilan SQL fundamental yang Anda butuhkan untuk berinteraksi dan mengkueri data Anda. 
  • Sertifikasi SQL Associate: Tunjukkan kemampuan SQL Anda dengan mengekstraksi data yang sesuai dari basis data, dan menggunakannya untuk menjawab pertanyaan data yang umum.
  • SQL Menengah: Dengan kursus praktik ini, Anda akan mempelajari semua yang perlu diketahui untuk menganalisis data menggunakan kode SQL Anda sendiri hari ini.

Vikash Singh's photo
Author
Vikash Singh
LinkedIn

Profesional berpengalaman di bidang ilmu data, kecerdasan buatan, analitik, dan strategi data.

Pertanyaan yang Sering Diajukan

Apa perbedaan utama antara SQL UNION dan UNION ALL?

UNION menghapus catatan duplikat, sedangkan UNION ALL menyertakan semua duplikasi.

Apakah ada perbedaan performa antara UNION dan UNION ALL?

Ya, UNION umumnya lebih lambat karena menghapus duplikasi.

Apakah ada use case khusus di mana UNION ALL lebih disukai daripada UNION?

UNION ALL lebih disukai saat Anda memerlukan semua catatan, termasuk duplikat, seperti dalam pelaporan dan analisis.

Kapan saya harus menggunakan SQL UNION alih-alih UNION ALL?

Gunakan UNION saat Anda membutuhkan himpunan hasil gabungan tanpa duplikasi.

Bagaimana dialek SQL yang berbeda memengaruhi penggunaan UNION dan UNION ALL?

Walau sintaks dasarnya konsisten, mungkin ada sedikit variasi dalam performa, penanganan NULL, dan kolasi antar dialek SQL.

Topik

Belajar SQL bersama DataCamp

Kursus

Manipulasi Data di SQL

4 Hr
323.6K
Kuasai kueri SQL yang kompleks yang diperlukan untuk menjawab berbagai pertanyaan ilmu data dan menyiapkan set data yang kuat untuk analisis di PostgreSQL.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Lebih BanyakLihat Lebih Banyak