Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Operator Oracle UNION Dijelaskan

Di Oracle Database, UNION operator memungkinkan kami untuk menggabungkan hasil dari dua kueri menjadi satu kumpulan hasil.

Contoh

Misalkan kita memiliki tabel berikut:

SELECT * FROM Teachers;
SELECT * FROM Students;

Hasil:

TEACHERID NAMA GURU
1 Warren
2 Ben
3 Cathy
4 Cathy
5 Tagihan
6 Tagihan
STUDENTID NAMA MAHASISWA
1 Faye
2 Jet
3 Lonjakan
4 Ein
5 Warren
6 Tagihan

Berikut ini contoh penggunaan UNION operator untuk mengembalikan nama semua guru dan siswa:

SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;

Hasil:

NAMA GURU
Ben
Tagihan
Cathy
Ein
Faye
Jet
Spike
Warren

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).

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:

NAMA GURU
Warren
Ben
Cathy
Cathy
Tagihan
Tagihan
Faye
Jet
Spike
Ein
Warren
Tagihan

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.

Beberapa Hal yang Perlu Diingat

Perhatikan bahwa ekspresi harus cocok dalam jumlah dan harus dalam grup tipe data yang sama. Oleh karena itu, kami tidak dapat melakukan hal berikut:

SELECT TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;

Hasil:

ORA-01789: query block has incorrect number of result columns

Atau ini:

SELECT TeacherName FROM Teachers
UNION
SELECT StudentId FROM Students;

Hasil:

ORA-01790: expression must have same datatype as corresponding expression

Meskipun, kita dapat menggunakan fungsi seperti TO_CHAR() untuk mengonversi kolom ke grup tipe data yang sesuai:

SELECT TeacherName FROM Teachers
UNION
SELECT TO_CHAR(StudentId) FROM Students;

Hasil:

TEACHERNAME
1
2
3
4
5
6
Ben
Bill
Cathy
Warren

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 Cara Mendapatkan Jumlah Hari dalam Sebulan di Oracle

  2. Adakah kerugian dari bendera bit di kolom basis data?

  3. Memuat Data Gambar ke Kolom BLOB di Oracle

  4. Apakah mungkin untuk merujuk ke nama kolom melalui variabel bind di Oracle?

  5. LOCALTIMESTAMP() Fungsi di Oracle