Set adalah sebuah operator dari hasil sebuah operasi dari 2 SELECT query.
Jenis operator Set:
- UNION
- UNION ALL
- INTERSECT
- MINUS
Union
- adalah operasi yg menggabungkan 2 hasil SELECT, yg dimana jika ada data yg duplikat, maka data duplikatnya akan dihapus
- contoh: SELECT DISTINCT email FROM users UNION SELECT DISTINCT email FROM guestbooks;
Union All
- adalah operasi yg sama dengan UNION, namun data yg duplikat tetap akan ditampilkan dihasil query nya
- contoh 1 SELECT DISTINCT email FROM users UNION ALL SELECT DISTINCT email FROM guestbooks;
- contoh 2 SELECT emails.email, COUNT(emails.email) FROM (SELECT email FROM users UNION ALL SELECT email FROM guestbooks) as emails GROUP BY emails.email;
Intersect
- operasi menggabungkan 2 query, namun data yg ditampilkan ada data yg terdapat dari kedua SELECT query
- jika ada data yg tidak terdapat disalah satu SELECT query, maka data tersebut tidak akan ditampilkan
- data tersebut tidak dalam duplikat
- MySQL tidak memiliki operator INTERSECT, untuk melakukannya, harus menggunakan JOIN atau SUBQUERY
- contoh 1 SELECT DISTINCT email FROM users WHERE email IN (SELECT DISTINCT email FROM guestbooks);
- contoh 2 SELECT DISTINCT users.email FROM users INNER JOIN guestbooks ON (guestbooks.email = users.email);
Minus
- adalah operasi query yg dimana jika ada data yg sama dari 2 SELECT query, maka data dari SELECT query yg kedua akan dihilangkan.
- artinya, jika data di query pertama dan query kedua ada yg sama, data di query kedua akan dihilangkan
- MySQL tidak memiliki operator MINUS, untuk melakukannya hal ini bisa menggunakan JOIN
- contoh 1 SELECT DISTINCT guestbooks.email, users.email FROM users LEFT JOIN guestbooks ON (users.email = guestbooks.email) WHERE guestbooks.email is NULL;
- operator ini cocok untuk menampilkan data users yg belum pernah mengisi guestbooks
Top comments (0)