表News,主要字段有id,fid,sid,del,time.等等
这是一个网站内信的表,老式的表都是一条一条的,想改成类似微信聊天这种,有聊天就合并为一个聊天,但是懒得做会话表,就这样进行去重查询
收件:根据sid去重,保留最新一条where n.Sid = 2
发件:根据fid去重,保留最新一条where n.Fid = 2
尝试了很多次,根据AI的解答得出以下方案,有没有懂的大佬看看有问题吗,或者可以优化一下
SELECT *,(select nickname from user as C where n.Sid = C.Id) as nick
from
( SELECT *, ROW_NUMBER() OVER (PARTITION BY Sid, Fid ORDER BY Time desc) AS RowNum FROM News where del=0) AS n
where
n.Sid = 2 AND n.RowNum = 1 and n.del=0
@echo醉老仙,意思是《如何从 News 表中,找出 fid=x, sid=y, del=0, time 最大 的一条数据》吗?
若是,这样好像简单些?(需要 sid、fid、del、time 索引)