2011-04-06 2 views
2

여기 내 쿼리 리턴 된 사용자 이름과 user_id가 항상 MAX (post_id)와 같은 행에 속하는 것은 아니라는 점을 제외하고 위의 쿼리에서 모든 것이 올바르게 작동합니다. 이들은 스레드의 모든 게시물에서 무작위로옵니다. 스레드가 5 명의 다른 사용자에 의해 5 개의 게시물을 가지고 있다면 출력에 "최종 사용자가 게시 한 제목을 제목으로"읽으려고하지만 대신 MySQL은 임의로 5 개의 행 중 임의의 사용자 이름과 user_id 값을 임의로 선택합니다 (겉으로보기). thread_id 아래에 그룹화됩니다.MySQL의에서 MAX() 값을 당기는 문제가있는 것은

MySQL에 "각 thread_id에 대해 최대 post_id 값을 가진 행을 가져 와서 해당 행의 값만 사용하십시오."thread_id에서 그룹화되는 다른 행의 값을 무작위로 반환하지 마십시오. "

도움을 주셔서 감사합니다.

크리스

+0

나는 당신이 가입 사용해야합니다 생각합니다. –

답변

3
select thread_id, p2.post_id as post_id, subject, user_id, username, dateline 

from posts 

join (
    select MAX(post_id) as post_id 
    from posts 
    group by thread_id 
    order by dateline DESC 
    limit 10 
) as p2 ON p2.post_id = posts.post_id 

order by dateline DESC 
+0

외부의 thread_id에 의한 GROUP이 불필요합니다. post_id가 유일하다고 가정하면 – RichardTheKiwi

+0

예, 쿼리를 다시 읽었을 때 :) 그리고 아마도 내부 쿼리의 한도를 이동하면 상황이 조금 더 빠릅니다. –

+1

감사합니다. – Chris

관련 문제