Я уже задавал подобный вопрос и раньше, и хотя полученные ответы были впечатляющими, мне, возможно, потребуется прояснить.
Так же, как Этот вопрос Я хочу вернуть N строк в зависимости от значения в столбце.
Мой пример: у меня есть блог, в котором я хочу показать свои сообщения вместе с предварительным просмотром комментариев. Последние три комментария будут точными.
У меня есть все, что мне нужно для моих постов, но я ломаю голову, чтобы получить правильные комментарии. Таблица комментариев имеет внешний ключ post_id, который, очевидно, может содержать несколько комментариев к одному сообщению, поэтому, если сообщение содержит 20 комментариев, я просто хочу вернуть последние три. Что делает это несколько сложным, так это то, что я хочу сделать это одним запросом, а не запросом с ограничением 3 для каждого сообщения в блоге, что делает отображение страницы с большим количеством сообщений очень сложным.
SELECT *
FROM replies
GROUP BY post_id
HAVING COUNT( post_id ) <=3
Этот запрос выполняет то, что я хочу, но возвращает только один комментарий, а не три.