Я использую этот SQL-код для объединения двух результатов поиска.Один с И, а другой - поиск ИЛИ.
Есть определенные результаты, которые, конечно, могут быть одинаковыми .. как в этом случае это post_id 1186. Таким образом, в результате он отображается в 2 раза.
Есть ли какой-нибудь хороший способ избавиться от дубликата.Я видел несколько решений, чтобы обернуть его в другой SELECT, но это приведет к ошибке из-за повторяющихся записей.Может быть, есть лучший способ узнать?
SELECT pt.post_text, pt.bbcode_uid, pt.post_subject, p.*, f.forum_id, f.forum_name, t.*, u.username, u.user_id, u.user_sig, u.user_sig_bbcode_uid, 1 sortby
FROM phpbb_forums f, phpbb_topics t, phpbb_users u, phpbb_posts p, phpbb_posts_text pt
WHERE p.post_id IN (1186)
AND pt.post_id = p.post_id
AND f.forum_id = p.forum_id
AND p.topic_id = t.topic_id
AND t.topic_id <> 3765
AND p.poster_id = u.user_id
GROUP BY t.topic_id
UNION
SELECT pt.post_text, pt.bbcode_uid, pt.post_subject, p.*, f.forum_id, f.forum_name, t.*, u.username, u.user_id, u.user_sig, u.user_sig_bbcode_uid, 2 sortby
FROM phpbb_forums f, phpbb_topics t, phpbb_users u, phpbb_posts p, phpbb_posts_text pt
WHERE p.post_id IN (8885, 12013, 1186, 4362, 4451, 4059, 8957, 10121, 11553, 11554, 12130, 12201, 4573, 4543, 4721, 5142, 5157, 5557, 5736, 5745, 5783, 5862, 6058, 6076, 6077, 6153, 6180, 6191, 6236, 6357, 6358, 6495, 6586, 6670, 4856, 6745, 6872, 7009, 7052, 7094, 7106, 7164, 7194, 4625, 4585, 4242, 4589, 4014, 4450, 4454, 4015, 4841, 7416, 7447, 7552, 4017, 4427, 7938, 8002, 8201, 8241, 8306, 8371, 8429, 8474, 8494, 8546, 8713, 8771, 8804, 9031, 9065, 9140, 9178, 9249, 9385, 9466, 9892, 10016, 10308, 10495, 10636, 10753, 10815, 10859, 11485, 11688, 11767, 11830, 12155, 12250)
AND pt.post_id = p.post_id
AND f.forum_id = p.forum_id
AND p.topic_id = t.topic_id
AND t.topic_id <> 3765
AND p.poster_id = u.user_id
GROUP BY t.topic_id ORDER BY sortby, rankscore DESC LIMIT 0, 1000