Berikut ini adalah catetan-catetan query MySQL agak tingkat lanjut yang agak-agak fak! untuk diingat-ingat, makanya daripada diingat, mending dicatat saja.
Semoga membantu diriku yang sedang di masa depan.
Find Duplicates of Multiple Column
tl;dr
csb
Mencari duplikasi pada banyak kolom tertentu, misalnya nama depan dan nama belakang. Query-nya adalah semacam ini :
Hint utama dari query ini adalah HAVING count(*)>1
alias lebih dari satu/duplikat.
A HAVING clause in SQL specifies that an SQL SELECT statement should only return rows where aggregate values meet the specified conditions.
Dan juga berkat GROUP BY first_name, last_name
ya.
The GROUP BY statement is used in conjunction with the aggregate functions to group the result-set by one or more columns.
Nah jikalau ingin tambah email tinggal GROUP BY first_name, last_name, email
atau jikalau mengecilkan cakupan kasih saja semacam WHERE `office_id` = '323'
saja.
Delete Duplicates of Multiple Column
tl:dr
csb
Setelah bisa mencari duplikasi pada banyak kolom tertentu, misalnya nama depan dan nama belakang, lantas gimana menghapusnya duplikasinya? Tentu dengan menyisakan salah satu row darinya. Query-nya ialah kira-kira semacam ini :
Hint utama dari query ini adalah alias USING `agent_contacts`, `agent_contacts` as vtable
SQL aliases (AS) are used to temporarily rename a table or a column heading.
Selanjutnya dengan logika semacam WHERE `agent_contacts`.id < vtable.id
untuk memilih mana yang mau dihapus. Kalau yang ingin dihapus yang lebih besar tinggal diganti WHERE `agent_contacts`.id > vtable.id
Atau untuk mengecilkan cakupan.