最後に6つの「トピック」レコード(topic_statusが0、つまりスパムでない最高のtopic_idsを持つレコード)を取得するJOINクエリがあります。JOINクエリが編集され、一意の値を持つフィールド
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フィールドが一意になるように、それは、つまり、私は同じtopic_posterで6つのレコードを得ることはありません。このクエリを編集したいのではなく、6は、すべてのユニークなtopic_poster持っているの記録値。
助けていただけたら幸いです! :-)ヴィンセントの答えのオフリフ
、私は正しく、各topic_posterため最高 topic_idを引っ張るクエリを思い付いたが、それは(ほとんどのクエリに比べて極端に遅くなる、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
素晴らしいです。ありがとう、ヴィンセント! – bobbyh
実際、これは各topic_posterの* lowest * topic_idを引っ張っているようで、* highest * topic_idを取得しようとしています。それは、各topic_posterのために利用可能な最高のtopic_idを表示するようにクエリを調整する方法はありますか? – bobbyh
ちょうど何かを試みる - 元のクエリでdescの代わりにascで順序を変更します。したがって、あなたは次のようになります:ORDER BY Topics.'topic_id' ASC - それはあなたが望むことをしますか? –