Как задать лимит не в общей выборке?

Данный запрос выдает 3 записи, один с id 91, и два с id 83. Как указать в условия чтобы бралось по одной записи с указанным id?
SELECT
  posts.idPost,
  users.loginUser,
  posts.datePost,
  posts.idUserPost
FROM posts
  INNER JOIN users
    ON posts.idUserPost = users.idUser
WHERE posts.idRecordPost IN (83, 91)
ORDER BY posts.datePost DESC

WHERE posts.idRecordPost IN (83, 91) # Брать по одной записи, в таблице их может быть много с одним "idRecordPost"

Извините, но сформулировать гуглу вопрос мне не удается.
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
inilim
@inilim Автор вопроса
SELECT t.`idPost`,t.`datePost`,u.loginUser FROM posts t INNER JOIN users u ON t.idUserPost = u.idUser WHERE NOT EXISTS
(SELECT * FROM posts WHERE `idRecordPost` = t.`idRecordPost` AND `datePost` > t.`datePost` ) AND `idRecordPost` IN (83,91)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Используйте GROUP BY
Ответ написан
erge
@erge
Примус починяю
см. ROW_NUMBER() и MySQL ROW_NUMBER, This is How You Emulate It

как-то так:

SELECT * FROM (
SELECT ....... ROW_NUMBER() OVER (PARTITION BY posts.idRecordPost ORDER posts.datePost DESC) row_num
  FROM .....
  ....
  WHERE posts.idRecordPost IN (83, 91)
) t
WHERE t.row_num = 1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы