Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MYSQL Deduplikat dan hapus baris duplikat dengan data paling sedikit

Anda dapat menggunakan kueri DELETE ini, yang bersifat umum dan dapat dengan mudah disesuaikan untuk mendukung lebih banyak bidang:

DELETE tablename.*
FROM
  tablename LEFT JOIN (
    SELECT MIN(id) min_id
    FROM
      tablename t INNER JOIN (
        SELECT
          emails, MAX((name IS NOT NULL) + (surname IS NOT NULL)) max_non_nulls
        FROM
          tablename
        GROUP BY
          emails) m
      ON t.emails=m.emails
         AND ((t.name IS NOT NULL) + (t.surname IS NOT NULL))=m.max_non_nulls
    GROUP BY
      t.emails) ids
  ON tablename.id=ids.min_id
WHERE
  ids.min_id IS NULL

Silakan lihat biola di sini .

Kueri ini mengembalikan jumlah maksimum bidang bukan nol, untuk setiap email:

SELECT
  emails,
  MAX((name IS NOT NULL) + (surname IS NOT NULL)) max_non_nulls
FROM
  tablename
GROUP BY
  emails

Saya kemudian menggabungkan kueri ini dengan nama tabel, untuk mendapatkan ID minimum untuk setiap email yang memiliki jumlah maksimum bidang bukan nol:

SELECT MIN(id) min_id
FROM
  tablename t INNER JOIN (
    SELECT
      emails, MAX((name IS NOT NULL) + (surname IS NOT NULL)) max_non_nulls
    FROM
      tablename
    GROUP BY
      emails) m
  ON t.emails=m.emails
     AND ((t.name IS NOT NULL) + (t.surname IS NOT NULL))=m.max_non_nulls
GROUP BY
  t.emails

lalu saya menghapus semua baris yang memiliki ID yang tidak dikembalikan oleh kueri ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. dua kata dan spasi kosong tidak berfungsi dalam kueri MYSQL menggunakan LIKE

  2. QueryException SQLSTATE[HY000] [1045] Akses ditolak untuk pengguna 'homestead'@'localhost' (menggunakan kata sandi:YA)

  3. permintaan MySQL. Apa perbedaan antara Gabung dan SubQuery?

  4. MySQL IN() untuk dua nilai/array?

  5. Mysql telah melampaui kesalahan max_user_connections di situs web c#