sql查询最近联系人包括用户名,时间,内容

一直被平均 2016-03-15 02:16:57


我想查询,所有与 张一联系过的用户名,并显示他们之间的最新的一条记录,包括用户名 留言内容,时间
显示结果
王三 这里是留言12 2016-3-15 13:24:58
李二 这里是留言11 2016-3-15 13:19:59
赵四 这里是留言8 2016-3-15 13:17:17

请问该如何查询

谢谢
...全文
263 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2016-03-18
  • 打赏
  • 举报
回复
SELECT * FROM DD AS A WHERE NOT EXISTS(SELECT 1 FROM DD WHERE (RID=A.RID AND SID=A.SID OR SID=A.RID AND RID=A.SID) AND DATA>A.DATA ) AND 1 IN(SID,RID)
这样改看看结果对不,同一个联系人和被联系人取最后一条记录
中国风 2016-03-18
  • 打赏
  • 举报
回复
引用 15 楼 zzhxlyh 的回复:
[quote=引用 14 楼 roy_88 的回复:] 你的数据是上面贴出来的数据么??
对,是上面贴出了的 另外。SELECT 1 FROM DD 这块的 1 是不是应该是2? 另外没明白 这个是什么意思? 谢谢 [/quote] 1或2是查询条件参数,对应人的ID,如SID=(1--张一;3---李三)
中国风 2016-03-18
  • 打赏
  • 举报
回复
别贴图,直接贴数据,这样方便大家测试,让大家看图敲打数据浪费时间 【如何更有效地在SQL Server论坛上提问】 http://bbs.csdn.net/topics/340199145
一直被平均 2016-03-18
  • 打赏
  • 举报
回复
引用 14 楼 roy_88 的回复:
你的数据是上面贴出来的数据么??
对,是上面贴出了的 另外。SELECT 1 FROM DD 这块的 1 是不是应该是2? 另外没明白 这个是什么意思? 谢谢
中国风 2016-03-18
  • 打赏
  • 举报
回复
你的数据是上面贴出来的数据么??
一直被平均 2016-03-18
  • 打赏
  • 举报
回复
引用 12 楼 roy_88 的回复:
测测看是不是这样效果
SELECT * FROM DD AS A WHERE NOT EXISTS(SELECT 1 FROM DD WHERE (RID IN(A.RID,A.SID) OR SID IN(A.RID,A.SID)) AND DATA>A.DATA ) AND 2 IN(SID,RID)
你好,现在查不到信息了。。
中国风 2016-03-18
  • 打赏
  • 举报
回复
引用 11 楼 zzhxlyh 的回复:
[quote=引用 8 楼 roy_88 的回复:] 改改 SELECT * FROM DD AS A WHERE NOT EXISTS(SELECT 1 FROM DD WHERE RID=A.RID AND DATA>A.DATA ) AND 1 IN(SID,RID)
你好,我刚才又试了下 如果查找与李二联系过的人
SELECT * FROM DD AS A WHERE NOT EXISTS(SELECT 2 FROM DD WHERE RID=A.RID AND DATA>A.DATA ) AND 2 IN(SID,RID)
少了一条,能否再改下??谢谢了[/quote] 测测看是不是这样效果
SELECT * FROM DD AS A WHERE NOT EXISTS(SELECT 1 FROM DD WHERE (RID IN(A.RID,A.SID) OR SID IN(A.RID,A.SID)) AND DATA>A.DATA ) AND 2 IN(SID,RID)
一直被平均 2016-03-18
  • 打赏
  • 举报
回复
引用 8 楼 roy_88 的回复:
改改 SELECT * FROM DD AS A WHERE NOT EXISTS(SELECT 1 FROM DD WHERE RID=A.RID AND DATA>A.DATA ) AND 1 IN(SID,RID)
你好,我刚才又试了下 如果查找与李二联系过的人
SELECT * FROM DD AS A WHERE NOT EXISTS(SELECT 2 FROM DD WHERE RID=A.RID AND DATA>A.DATA ) AND 2 IN(SID,RID)
少了一条,能否再改下??谢谢了
一直被平均 2016-03-18
  • 打赏
  • 举报
回复
引用 18 楼 roy_88 的回复:
SELECT * FROM DD AS A WHERE NOT EXISTS(SELECT 1 FROM DD WHERE (RID=A.RID AND SID=A.SID OR SID=A.RID AND RID=A.SID) AND DATA>A.DATA ) AND 1 IN(SID,RID)
这样改看看结果对不,同一个联系人和被联系人取最后一条记录
真的太感谢您了,十分感谢,感谢您不厌其烦的答复我,谢谢 这回真的是一点问题都没有了。谢谢
中国风 2016-03-16
  • 打赏
  • 举报
回复
改改 SELECT * FROM DD AS A WHERE NOT EXISTS(SELECT 1 FROM DD WHERE RID=A.RID AND DATA>A.DATA ) AND 1 IN(SID,RID)
dongsheng10101 2016-03-16
  • 打赏
  • 举报
回复
select b.na,a.nei,a.data from dd a inner join ( select max(id) asid,case when sna='张一' then rna when rna='张一' then sna else '' end na from dd where sna='张一' or rna='张一' group by case when sna='张一' then rna when rna='张一' then sna else '' end ) b on a.id=b.asid
中国风 2016-03-16
  • 打赏
  • 举报
回复
引用 楼主 zzhxlyh 的回复:
我想查询,所有与 张一联系过的用户名,并显示他们之间的最新的一条记录,包括用户名 留言内容,时间 显示结果 王三 这里是留言12 2016-3-15 13:24:58 李二 这里是留言11 2016-3-15 13:19:59 赵四 这里是留言8 2016-3-15 13:17:17 请问该如何查询 谢谢
红色字样有岐义 如果只是显示被联系人,最新的一条用把条件SID=A.SID AND去掉
SELECT * FROM DD AS A WHERE NOT EXISTS(SELECT 1 FROM DD WHERE RID=A.RID AND (DATA>A.DATA OR DATA=A.DATA AND ID>a.ID))
Ginnnnnnnn 2016-03-16
  • 打赏
  • 举报
回复
你还有一个张一用户啊……如果你要只显示这3个,并且只有那3个列,就这样
SELECT sna,nei,data FROM dd a
	WHERE NOT EXISTS(SELECT * FROM dd WHERE a.rid = rid AND data > a.data) and rid in (2,3,4)
一直被平均 2016-03-16
  • 打赏
  • 举报
回复
引用 1 楼 roy_88 的回复:
SELECT * FROM DD AS A WHERE NOT EXISTS(SELECT 1 FROM DD WHERE SID=A.SID AND RID=A.RID AND DATA>A.DATE)
你好,我运行了下,好像不太对,查询出来是8条信息。。。
一直被平均 2016-03-16
  • 打赏
  • 举报
回复
引用 2 楼 KanzakiOrange 的回复:
SELECT * FROM dd a
	WHERE NOT EXISTS(SELECT * FROM dd WHERE a.rid = rid AND data > a.data)
你好,多出了一条 另外能否显示 王三 这里是留言12 2016-3-15 13:24:58 李二 这里是留言11 2016-3-15 13:19:59 赵四 这里是留言8 2016-3-15 13:17:17 这种的?谢谢
一直被平均 2016-03-16
  • 打赏
  • 举报
回复
引用 8 楼 roy_88 的回复:
改改 SELECT * FROM DD AS A WHERE NOT EXISTS(SELECT 1 FROM DD WHERE RID=A.RID AND DATA>A.DATA ) AND 1 IN(SID,RID)
谢谢,是我表达能力太差,这个确实显示出来了 剩下的我用程序判断应该就行了
一直被平均 2016-03-16
  • 打赏
  • 举报
回复
引用 7 楼 dongsheng10101 的回复:
select b.na,a.nei,a.data from dd a inner join ( select max(id) asid,case when sna='张一' then rna when rna='张一' then sna else '' end na from dd where sna='张一' or rna='张一' group by case when sna='张一' then rna when rna='张一' then sna else '' end ) b on a.id=b.asid
你好,运行错误。。。
Ginnnnnnnn 2016-03-15
  • 打赏
  • 举报
回复
SELECT * FROM dd a
	WHERE NOT EXISTS(SELECT * FROM dd WHERE a.rid = rid AND data > a.data)
中国风 2016-03-15
  • 打赏
  • 举报
回复
SELECT * FROM DD AS A WHERE NOT EXISTS(SELECT 1 FROM DD WHERE SID=A.SID AND RID=A.RID AND DATA>A.DATE)

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧