我尝试过stackoverflow的其他答案,但似乎没有什么对我有用。我有一个表名聊天(参考图片)。我想为邮件创建收件箱页面,但我无法在顶部显示最新发件人的邮件ID。但是,以下sql语句对我不起作用:
SELECT * from chat where userid='53' group by receiver order by id desc
我应该只能看到最新发件人的最新消息和ID。 相反,我看到一些随机消息和订单。
表的形象是
不,我想创建包含所有不同发件人的收件箱。 它应该像whatsapp或facebook收件箱。我应该在顶部看到最新的消息。
答案 0 :(得分:1)
这是使用left join
执行此操作的方法,还有其他方法可以执行相同操作。您也可以检查http://dev.mysql.com/doc/refman/5.6/en/example-maximum-column-group-row.html
select * from chat c1
left join chat c2 on c1.userid = c2.userid
and c1.receiver = c2.receiver
and c1.id < c2.id
where c1.userid = 53 and c2.id is null
order by c1.id desc
答案 1 :(得分:0)
(编辑解释)
limit
子句减少了结果中的项目数。
见MySQL guide
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
retrive 1行的最简单用法是limit 1
。要获得“最后一个”,您可以反转顺序,尝试
SELECT *
FROM chat
WHERE userid='53'
GROUP BY receiver
ORDER BY datetime
LIMIT 1
答案 2 :(得分:0)
使用LIMIT
限制元组数
SELECT MAX(id) as mid, message from chat where userid='53' group by receiver