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