left join alle主题仅限粘贴和最后发布DESC的最后发布顺序

i am trying to get all topics based on a forum ID. Those topics need to be ordered by sticky first and then by last post date secondly.

I have this query, working almost fine but it doesn't order the topics in the way i want.

SELECT 
    forum_posts.posted_by, 
    forum_posts.posted, 
    forum_topics.id, 
    forum_topics.subject, 
    forum_topics.sticky, 
    forum_topics.closed 
FROM 
    forum_posts 
LEFT JOIN 
    forum_topics 
ON 
    forum_topics.id=forum_posts.topic_id 
WHERE forum_topics.forum_id=$forumdata->id 
GROUP BY forum_topics.id 
ORDER BY forum_posts.posted DESC

If I read your question correctly, then you only need to make a slight change to the ORDER BY clause:

ORDER BY
    forum_topics.sticky,          -- just add this
    forum_posts.posted DESC;

However, as you are selecting non aggregate columns, my hunch is that you should really be using a subquery to figure out the latest post:

SELECT
    ft.*, fp1.*
FROM forum_posts fp1
INNER JOIN
(
    SELECT topic_id, MAX(posted) AS max_posted
    FROM forum_posts
    GROUP BY topic_id
) fp2
    ON fp1.topic_id = fp2.topic_id AND
       fp1.posted = fp2.max_posted
LEFT JOIN forum_topics ft
    ON fp1.id = ft.topic_id
ORDER BY
    ft.sticky;

if you need sticky first an then post then you need order by orum_topics.sticky, forum_posts.posted eg:

  SELECT 
      forum_posts.posted_by, 
      forum_posts.posted, 
      forum_topics.id, 
      forum_topics.subject, 
      forum_topics.sticky, 
      forum_topics.closed 
  FROM 
      forum_posts 
  LEFT JOIN 
      forum_topics 
  ON 
      forum_topics.id=forum_posts.topic_id 
  WHERE forum_topics.forum_id=$forumdata->id 
  GROUP BY forum_topics.id 
  ORDER BY forum_topics.sticky DESC, forum_posts.posted DESC