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

Pilih beberapa duplikat bidang dari Database MySQL

Solusi yang sangat meretas adalah mendapatkan thread_id diurutkan berdasarkan view_count dalam GROUP_CONCAT . Kemudian, kita dapat menggunakan operasi string untuk mendapatkan thread_id dengan minimum view_count .

Di SELECT . Anda klausa, bukan t.thread_id , Anda dapat mencoba yang berikut ini:

SUBSTRING_INDEX(GROUP_CONCAT(DISTINCT t.thread_id 
                             ORDER BY t.view_count ASC 
                             SEPARATOR ','), 
                ',', 
                1) AS thread_id_with_minimum_views

Sekarang, berdasarkan SELECT kueri untuk mengidentifikasi rekaman duplikat dengan tampilan Minimum, DELETE permintaan untuk menghapus catatan tersebut dari xf_thread tabelnya adalah sebagai berikut:

DELETE t_delete FROM xf_thread AS t_delete 
INNER JOIN (SELECT CAST(SUBSTRING_INDEX(GROUP_CONCAT(DISTINCT t.thread_id ORDER BY t.view_count ASC SEPARATOR ','), ',', 1) AS UNSIGNED) AS tid_min_view 
            FROM (SELECT * FROM xf_thread) t 
            INNER JOIN xf_post p ON p.thread_id = t.thread_id 
            WHERE t.first_post_id = p.post_id 
              AND t.user_id = 0 
              AND t.reply_count < 2 
            GROUP BY t.title, t.username, p.message 
            HAVING Count(t.title) > 1 
               AND Count(t.username) > 1 
               AND Count(p.message) > 1 
            ORDER BY t.thread_id) AS t_dup 
  ON t_delete.thread_id = t_dup.tid_min_view 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pola koneksi database tunggal PHP

  2. Tidak digunakan lagi:mysql_connect()

  3. berikan variabel javascript ke php mysql pilih kueri

  4. Kutipan tunggal, Kutipan ganda, dan Backtick di MySQL

  5. Spring 3 MVC + MySQL:tidak dapat menyimpan karakter €