Mysql
 sql >> база данни >  >> RDS >> Mysql

Изберете множество дубликати на полета от MySQL база данни

Много хакерско решение е да получите thread_id сортирано по view_count в GROUP_CONCAT . След това можем да използваме низови операции, за да получим thread_id сминимумо view_count .

Във вашия SELECT клауза, вместо t.thread_id , можете да опитате следното:

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

Сега, въз основа на SELECT заявка за идентифициране на дублиращи се записи с минимален изглед, DELETE заявка за изтриване на такива записи от xf_thread таблицата ще бъде както следва:

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. Има ли начин да се ограничи резултатът с ELOQUENT ORM на Laravel?

  2. Как да генерирам уникален идентификатор в MySQL?

  3. Многостепенни отговори на коментари:Дисплей и съхранение

  4. MySQL - Най-добрият метод за обработка на тези йерархични данни?

  5. Как да създавам таблици с N:M връзка в MySQL?