Установить лимит для запроса MySQL - PullRequest
0 голосов
/ 11 января 2012

У меня такой запрос:

SELECT `all_messages`.`user_1`, `messages`.*, `users`.`username` 
FROM `all_messages` 
JOIN `messages` ON (`all_messages`.`user_2` = `messages`.`from_user`) 
JOIN `users` ON (`all_messages`.`user_2` = `users`.`id`)
WHERE `all_messages`.`user_1` = '12' 
ORDER BY `messages`.`sent` DESC LIMIT 2

Теперь этот запрос делает то, что мне нужно, но моя проблема с этой строкой

ON (`all_messages`.`user_2` = `messages`.`from_user`)

Он выбирает все данные из messages, где были найдены совпадения, но мне нужна только одна новейшая запись. Надеюсь, вы, ребята, поняли, о чем я.

1 Ответ

2 голосов
/ 11 января 2012

Если вам нужна одна «самая новая запись», у вас должен быть столбец с датой или что-то вроде этого, назовите его "CREATION_TIME", чтобы вы могли сделать что-то вроде этого

SELECT AM.user_1, M.*, U.username 
FROM all_messages AM, messages M , users U
WHERE AM.user_1 = '12' 
AND  AM.user_2 = M.from_user
AND  AM.user_2 = U.id
AND M.CREATION_TIME =
( 
  SELECT MAX(CREATION_TIME)
  FROM messages 
  WHERE from_user= M.from_user
)
ORDER BY M.sent DESC LIMIT 2

Редактировать

    SELECT AM.user_1, M.*, U.username 
    FROM all_messages AM, messages M, users U
    WHERE AM.user_1 = '12' 
    AND  AM.user_2 = M.from_user
    AND  AM.user_2 = U.id
    AND M.sent =
    ( 
      SELECT MAX(sent)
      FROM messages 
      WHERE from_user= M.from_user
    )
    ORDER BY M.sent DESC LIMIT 2

Должно работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...