Получение идентификаторов DISTINCT в MySQL - PullRequest
0 голосов
/ 22 ноября 2011

У меня есть такая структура таблицы:

Comments table
id      review_id    user_id  created     comments deleted
1       10           28       2011-10-12  "hi"     0
2       11           28       2011-10-13  "yo"     0
3       10           28       2011-10-15  "bye"    0

Я хочу получить последний комментарий от каждого отзыва, отсортированного по созданным DESC. Итак, у меня есть что-то вроде этого:

SELECT DISTINCT review_id, 'comments' as type FROM comments as MyTable WHERE 
user_id=28 AND deleted=0 ORDER BY created DESC LIMIT 30

Итак, в приведенной выше таблице я хочу получить строки для id = 3, а затем id = 2.

Ответы [ 2 ]

3 голосов
/ 22 ноября 2011

Пример запроса:

http://data.stackexchange.com/stackoverflow/s/2143/getting-distinct-ids-in-mysql

SELECT id,comment
FROM comments
WHERE id IN (
    SELECT MAX(id)
    FROM comments
    WHERE user_id=28 AND deleted=0
    GROUP BY review_id )
ORDER BY created DESC
1 голос
/ 24 декабря 2011

Пожалуйста, включите этот код в ваш код.

Данные таблицы:

id      review_id    user_id  created     comments deleted
1       10           28       2011-10-12  "hi"     0
2       11           28       2011-10-13  "yo"     0
3       10           28       2011-10-15  "bye"    0

Выполнить запрос:

SELECT DISTINCT id, review_id, 'comments' AS TYPE 
FROM mytable
WHERE user_id = 28
AND deleted = 0
AND id = (
  SELECT max( id )
  FROM mytable 
)

Результат:

id  review_id    TYPE
3   10       comments
...