DEV Community

Ali Nurdin
Ali Nurdin

Posted on

Set operator di Mysql

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)