sql >> データベース >  >> RDS >> Mysql

MySQLデータベースから重複する複数のフィールドを選択します

    非常にハッキーな解決策は、thread_idを取得することです。 view_countで並べ替え GROUP_CONCAT 。次に、文字列操作を利用してthread_idを取得できます。 最小 view_count

    SELECTt.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. MySQLトリガーは、トリガーが割り当てられている同じテーブルの行を更新できません。推奨される回避策は?

    2. PDOfetchAllはキーと値のペアを連想配列にグループ化します

    3. MySQLデータベースの画像をJTableの単一の列に表示する

    4. MySQL:intフィールドの値を切り替える簡単な方法