사용자 테이블 당 제한 행MYSQL : 상기 식에서()
ID
user_comments 표
ID | user_id | 내용 |
created_at 나는 사용자 ID의 목록을 가지고 있고, 나는 각 사용자 ID에 대한 최신 3 개의 댓글을 잡고 싶다.
SELECT * FROM user_comments WHERE user_id IN (1, 2, 3, 4, 5)
ORDER BY created_at DESC
LIMIT 3;
이 모든 일치하는 ID를, 내가 각 ID의 마지막 3 개의 댓글을 원하는 에서 마지막 3 개의 댓글을 잡아 것입니다. 하나의 유니온이없는 쿼리.
나는 그 자체로 테이블에 합류하려고 노력했지만 제대로 할 수없는 것 같습니다.
** 편집 : 주문시 ID 열에 의존 할 수 없으며 날짜 열을 사용해야합니다.
감사합니다.
** 내 최종 솔루션
SELECT user_comments.* FROM user_comments
LEFT OUTER JOIN user_comments user_comments_2
ON user_comments.post_id = user_comments_2.post_id
AND user_comments.id < user_comments_2.id
where user_comments.post_id in (x,x,x)
GROUP BY user_comments.id
HAVING COUNT(*) < 3
ORDER BY user_id, created_at
(경고 포함) 나를 위해 @PaulSpiegel 한 작업에 의해 제안 된 대답을하지만 내가 사용하여 만든 솔루션을 결합 위로가는 종료 이 스레드에서이 정보 : link
Bill Karwin이 언급했습니다.
감사합니다. 대신 created_at
의 id
를 사용할 수있는 경우
SELECT * FROM user_comments where user_id = 1 또는 user_id = 2 또는 user_id = 3 또는 user_id = 4 ORDER BY created_at DESC LIMIT 3; –
AUTO_INCREMENT 열이 있습니까? –
@PaulSpiegel - 예, id 열은 auto_inc입니다. – magnito