2012-04-09 2 views
1

Используя следующий запрос, я ищу решение для получения последней записи, имеющей некоторые условия. Но это дает мне первую запись, не последнюю. Я думаю, что его только с учетом группы по Пожалуйста, посоветуйте мнеMySql: Сортировать по и группе По сочетанию, не давая последней записи

SELECT * FROM `contacts` WHERE `id_receiver`=1 GROUP BY `id_thread` ORDER BY created DESC 

id id_sender id_thread sender_email id_receiver  created(datetime) 
1 2    2   51    1    2012-03-24 13:44:48 
2 4    4   1    5     2012-04-26 13:46:05 
3 2    2   51    1    2012-04-09 12:12:30 

Обязательный выход

id id_sender id_thread sender_email id_receiver  created(datetime) 
3 2   2   51    1    2012-04-09 12:12:30 

я сделал тест просто поменять порядок, и группа по, давая мне erros.

Любой может просто посмотреть на это ?. Благодарю.

EDIT Edited вопрос, забудьте написать id_thread

+0

Знаете ли вы, что вам нужно использовать агрегатные функции для этих столбцов, если вы используете группу? –

+1

@duke вы не можете поменять группу по порядку, потому что группа не может быть размещена после заказа. Какой тип данных вы используете для cretaed –

+1

Созданное значение вывода не существует в ваших данных образца, должно ли оно быть «2012-04-09 12:12:30»? – liquorvicar

ответ

3

Как вы можете GROUP BY id_thread когда в вашем столе нет колонки id_thread?

SELECT * 
FROM contacts 
WHERE id_receiver = 1 
           --- GROUP BY id_thread 
           --- removed 
ORDER BY created DESC 
LIMIT 1       --- only show one row 

Исходя из ваших комментариев, что вы хотите это последняя (по заказу created) строка для каждого id_thread, что другой, более сложный запрос. Есть даже тег для таких запросов, который называется [greatest-n-per-group].

SELECT c.* 
FROM contacts AS c 
    JOIN 
    (SELECT id_thread, MAX(created) AS created 
     FROM contacts 
     WHERE id_receiver = 1 
     GROUP BY id_thread 
    ) AS g 
    ON (g.id_thread, g.created) = (c.id_thread, c.created) 
WHERE c.id_receiver = 1 
+0

, есть id_thread, как-то Iforget, чтобы добавить это, это самое важное. –

+0

Вау! Это трюк –

+0

Это результат, который вы хотите повлиять на этот 'id_thread'? –

0

, если записи идет последовательный, чем вы могли бы SORT по идентификатору тоже - тогда и только тогда, когда она создается в последовательном порядке -

Смежные вопросы