查询消息列表,例如,查询某人的所有好友给他发送的最近的一条消息
消息列表如下图:
SELECT * FROM
(
SELECT
-- 条件判断,同类型序号加1 ,不同类型,重新赋值
CASE WHEN @to_id_t != CONCAT(t.from_id,t.to_id) THEN @row_num_t:=1
ELSE @row_num_t:= @row_num_t + 1
END as row_sort,
-- 变量赋值
@to_id_t :=CONCAT(t.from_id,t.to_id) as temp,
t.from_id,
t.to_id,
t.msg,
t.isRead,
t.time
FROM
`chat_history` t,
-- 定义变量 一个用来排序,一个用来当中间变量判断条件
(SELECT @row_num_t :=0) t1,
(SELECT @to_id_t :='') t2
-- row_num_t变量赋值序号时需要先排好序
ORDER BY t.from_id,t.to_id, t.time DESC
) a
-- 排序为1的即为该组所求数据
where a.row_sort = 1
查询结果为:
筛选最新的一条消息即为row_sort=1
的数据,结果为: