2016-01-19 2 views
0

Таблица структурыMysql Group по/Поручения личных сообщений Список

Id  User_From  User_To  Time_sent   Message  Message_read 
1    1    2  ~TimeLast   ~Message     0 
2    3    2   ~Time    ...     0 
3    3    2  ~TimeLast    ...     0 

Как создать запрос, который отфильтровывает все непрочитанные сообщения, но показывает только последний из них, если более 1 непрочитанных тез в стол?

Так Id получить это в результате

Id User_From  User_To  Time_sent  Message  Mesage_read 
1   1   2  LastTime   ~~     0 
3   3   2  LastTime   ~~     0 

Edit: это работало нормально

select p.id,user_from,username,message,time_sent,message_read 
    from private_messages p join users u on p.user_from = u.id where p.id in (select max(id) as id from private_messages where user_to = :u1 group by user_from 

ответ

0

Таким образом, ваш результат должен всегда только вернуть одно сообщение? И это одно сообщение должно быть последним отправлено? то этот запрос будет работать

SELECT * FROM table WHERE Message_read 0 
ORDER BY Time_sent LIMIT 1 
+0

Указывает ли это сообщение в моем желаемом результате? НЕТ – battlenub

0

просто используя Mysql LIMIT, «Mysql Limit» можно определить, сколько результатов вы получите, если вы используете «LIMIT 1» в вашем MySQL Query, то вы получите только 1 результат.

SELECT * FROM table_name WHERE Message_read=0 
ORDER BY Time_sent LIMIT 1 

Это должно возвращать только 1 результат из таблицы, где Message_read = 0 и последней в вашей таблице.

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