Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wybierz wiele duplikatów pól z bazy danych MySQL

Bardzo zwariowanym rozwiązaniem jest uzyskanie thread_id posortowane według view_count w GROUP_CONCAT . Następnie możemy użyć operacji na ciągach, aby uzyskać thread_id z minimum view_count .

W swoim SELECT klauzula, zamiast t.thread_id , możesz spróbować następujących czynności:

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

Teraz, na podstawie SELECT zapytanie identyfikujące zduplikowane rekordy z minimalnym widokiem, DELETE zapytanie, aby usunąć takie rekordy z xf_thread tabela będzie wyglądać następująco:

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. Test połączenia PDO

  2. Zarządzanie kontami użytkowników, role, uprawnienia, uwierzytelnianie PHP i MySQL -- Część 5

  3. MySQL DATETIME - Zmień tylko datę

  4. MySQL niewłaściwie skonfigurowany Przyczyna:niebezpieczne użycie ścieżki względnej

  5. Format zmiennej MySQL dla listy wartości NOT IN