최종 목적을 쓰자면요, 게시판이라고 하면 게시판의 사용자별로 최신글 세 개씩 뽑아오는 쿼리를 만들려고 합니다.
SELECT * FROM post WHERE userId = :userid ORDER BY postId desc LIMIT 3;
이 쿼리를 프로그램 상에서 for반복문으로 모든 사용자별로 다 돌릴 수는 없는 노릇이라서요. 사실 모든 사용자에 대해 다 가져오는 것은 아니고, 뽑아오려는 사용자의 userId를 배열로 받아옵니다. (적게는 1개고 최대 50 개쯤 될 듯 하네요.)
아는 사람에게 도움을 구했더니, 오라클에서는 RANK() OVER (...)를 이용하면 된다고 하던데 mysql에는 그게 없군요. UNION을 이용해도 쿼리 하나로는 될 것 같은데, 그걸 쓰자니 사용자가 많으면 쿼리가 너무 길어지고 속도도 안 나올 듯 해서요. (for 돌리는 것 보다야 빠를 것 같긴 하지만...)
|