Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chọn nhiều trường trùng lặp từ Cơ sở dữ liệu MySQL

Một giải pháp rất khó hiểu là lấy thread_id được sắp xếp theo view_count trong GROUP_CONCAT . Sau đó, chúng ta có thể sử dụng các thao tác chuỗi để lấy thread_id với tối thiểu view_count .

Trong SELECT của bạn mệnh đề, thay vì t.thread_id , bạn có thể thử những cách sau:

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

Bây giờ, dựa trên SELECT truy vấn để xác định các bản ghi trùng lặp với Chế độ xem tối thiểu, DELETE truy vấn để xóa các bản ghi như vậy khỏi xf_thread bảng sẽ như sau:

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. Tại sao tôi cần sử dụng khóa ngoại nếu tôi có thể sử dụng WHERE?

  2. Hàng html đầu tiên không được hiển thị

  3. Kết hợp bất hợp pháp các đối chiếu (utf8mb4_unicode_ci, IMPLICIT) và (utf8mb4_general_ci, IMPLICIT) cho hoạt động '='

  4. Tôi có thể thay thế mù quáng tất cả các hàm mysql_ bằng mysqli_ không?

  5. Giải thích về khung tính khả dụng cao của MySQL - Phần III:Tình huống thất bại