27,579
社区成员
发帖
与我相关
我的任务
分享
DECLARE @my_id int
SET @my_id = 3
;WITH t AS ( -- 我对话的所有记录
SELECT user_id_sender AS contacter_id, *
FROM t_user_letter
WHERE user_id_receiver = @my_id
UNION ALL
SELECT user_id_receiver AS contacter_id, *
FROM t_user_letter
WHERE user_id_sender = @my_id
)
,t1 AS ( -- 我所有的联系人
SELECT DISTINCT contacter_id
FROM T
)
SELECT t.*
FROM t1
CROSS APPLY ( -- 每个联系人的最新记录
SELECT TOP 1 *
FROM t
WHERE contacter_id = t1.contacter_id
ORDER BY time DESC
) s
select *
from t_user_letter t
where time = (select MAX(time) from t_user_letter
where (user_id_sender = t.user_id_sender and user_id_receiver = t.user_id_receiver)
or (user_id_sender = t.user_id_receiver and user_id_receiver = t.user_id_sender))