Di MariaDB, UNION
operator menggabungkan hasil dari beberapa SELECT
pernyataan menjadi satu set hasil.
Sintaks
Sintaks resminya seperti ini:
SELECT ...
UNION [ALL | DISTINCT] SELECT ...
[UNION [ALL | DISTINCT] SELECT ...]
[ORDER BY [column [, column ...]]]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
Dari MariaDB 10.4.0, tanda kurung dapat digunakan untuk menentukan prioritas.
Contoh
Misalkan kita memiliki tabel berikut:
SELECT * FROM Teachers;
SELECT * FROM Students;
Hasil:
+-----------+-------------+ | TeacherId | TeacherName | +-----------+-------------+ | 1 | Warren | | 2 | Ben | | 3 | Cathy | | 4 | Cathy | | 5 | Bill | | 6 | Bill | +-----------+-------------+ +-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 1 | Faye | | 2 | Jet | | 3 | Spike | | 4 | Ein | | 5 | Warren | | 6 | Bill | +-----------+-------------+
Kita dapat menggunakan UNION
operator untuk mengembalikan semua guru dan siswa:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;
Hasil:
+-------------+ | TeacherName | +-------------+ | Warren | | Ben | | Cathy | | Bill | | Faye | | Jet | | Spike | | Ein | +-------------+ 8 rows in set (0.003 sec)
Secara default, UNION
operator secara implisit menerapkan DISTINCT
operasi. Dengan kata lain, ini hanya mengembalikan nilai yang berbeda secara default. Jadi hasil di atas hanya berisi satu masing-masing Warren, Cathy dan Bill. Ini terlepas dari fakta bahwa tabel gabungan sebenarnya berisi dua Warrens, dua Cathys, dan tiga Bills (ada dua guru bernama Cathy, seorang guru dan pelanggan bernama Warren, dan dua bernama Bill, serta satu siswa bernama Bill).
Berikut adalah contoh yang secara eksplisit menggunakan DISTINCT
operator:
SELECT TeacherName FROM Teachers
UNION DISTINCT
SELECT StudentName FROM Students;
Hasil:
+-------------+ | TeacherName | +-------------+ | Warren | | Ben | | Cathy | | Bill | | Faye | | Jet | | Spike | | Ein | +-------------+ 8 rows in set (0.004 sec)
Jadi kami mendapatkan hasil yang sama dengan yang kami dapatkan tanpa DISTINCT
operator.
Sertakan Duplikat
Kita dapat menggunakan ALL
kata kunci untuk memasukkan nilai duplikat dalam hasil:
SELECT TeacherName FROM Teachers
UNION ALL
SELECT StudentName FROM Students;
Hasil:
+-------------+ | TeacherName | +-------------+ | Warren | | Ben | | Cathy | | Cathy | | Bill | | Bill | | Faye | | Jet | | Spike | | Ein | | Warren | | Bill | +-------------+ 12 rows in set (0.002 sec)
Kali ini kami mendapat dua belas baris, bukan delapan yang kami dapatkan dalam contoh pertama kami.
Kita dapat melihat bahwa kedua Cathys dikembalikan dan ketiga Bills dikembalikan.