Я пишу sql-запрос, чтобы получить сообщение и только последний комментарий этого сообщения (если существует). Но я не могу найти способ ограничить только 1 строку для правого столбца в левом соединении.TSQL left join и только последняя строка справа
Вот пример этого запроса.
SELECT post.id, post.title,comment.id,comment.message
from post
left outer join comment
on post.id=comment.post_id
Если пост имеет 3 комментария я получаю 3 строку с этой должностью, но я хочу только 1 строку с последним комментарием (упорядоченного по дате).
Может ли кто-нибудь помочь мне с этим вопросом?
Спасибо за ответ. Я использую следующий код. ВЫБРАТЬ post.id, post.title, c.id в comment_id, c.message из почтового левого внешнего соединения (выберите comment.id, comment.post_id, comment.message, row_number() OVER (PARTITION BY комментарий .post_id ORDER BY comment.date DESC) AS rn из комментария) c на post.id = c.post_id где c.rn = 1 или c.rn имеет значение null – barbarian
Оператор APPLY сделал трюк для меня. Я делал соединение «1-ко-многим», но мне нужно было уменьшить совпадения правой стороны до только самого последнего. Благодаря! –
Интересно поставить эти два вместе, чтобы показать оценочный план запроса, опция «apply» была равна 99% от стоимости запроса: o –