У меня есть запрос JOIN, который извлекает последние 6 записей "topic" (записи с самыми высокими значениями topic_id, которые имеют значение topic_status, равное 0, т. Е. Это не спам):
SELECT topic_title, topic_slug, meta_value, topic_poster
FROM `folio_topics` as Topics
INNER JOIN `folio_topicmeta` as Topicmeta
ON Topics.topic_id = Topicmeta.topic_id
WHERE `topic_status` = 0
AND Topicmeta.meta_key = 'bb_attach_thumb'
ORDER BY Topics.`topic_id` DESC
LIMIT 6
Я хотел бы отредактировать этот запрос так, чтобы поле folio_topics.topic_poster было уникальным, т. Е. Я не получаю 6 записей с одинаковым topic_poster, а скорее 6 записей, каждая из которых имеет уникальное значение topic_poster.
Любая помощь будет оценена! : -)
Не обращая внимания на ответ Винсента, я пришел с запросом, который правильно вытягивает наибольший topic_id для каждого topic_poster, но это занимает 8,7 секунды, что крайне медленно по сравнению с большинством запросов (которые занимают меньше, чем 0,1 секунды). Есть ли способ оптимизировать этот запрос?
SELECT topic_title, topic_slug, meta_value, topic_poster
FROM `folio_topics` AS Topics
INNER JOIN `folio_topicmeta` AS Topicmeta
ON Topics.topic_id = Topicmeta.topic_id
WHERE Topics.topic_id IN (
SELECT MAX(`topic_id`)
FROM `folio_topics`
WHERE `topic_status` = 0
GROUP BY `topic_poster`)
AND Topicmeta.meta_key = 'bb_attach_thumb'
ORDER BY Topics.`topic_id` DESC
LIMIT 6