我尝试使用此查询获取最后一个条目,但我无法获得最后一行(仅限第一行):
select users.*,messages.*
from messages
LEFT JOIN users
ON messages.messageBy=users.email
where messageToUser='{loginUser}'
GROUP BY messageBy
答案 0 :(得分:1)
如果您想通过群组获取最后一条记录,请尝试以下查询
select users.*,message.*
from
message
LEFT JOIN
users
ON
message.messageBy = users.email
where
messageToUser=1
AND
messageid IN (SELECT max(messageid) FROM message GROUP BY messageBy)
GROUP BY
messageBy
ORDER BY
messageid DESC
的粗略演示
答案 1 :(得分:0)
因此,如果您的消息表中存储了任何类型的id字段或日期,则可以执行以下操作:
SELECT
...
ORDER BY your_date_field DESC
LIMIT 1
OR
SELECT
...
ORDER BY id DESC
LIMIT 1
否则,您将继续使用代码来计算返回的记录数,并获取最后一个记录。
答案 2 :(得分:0)
哦,你想要每个用户的最后一条消息。
股票解决方案看起来像这样......
SELECT x.*
FROM my_table x
JOIN (SELECT my_grouping_id,MAX(my_ordering_id) max_my_ordering_id FROM my_table GROUP BY my_grouping_id) y
ON y.my_grouping_id = x.my_grouping_id
AND y.max_my_ordering_id = x.my_ordering_id;