急求一个sql查询语句

kingkongzxl 2013-06-25 10:47:42
有个短信通信表 msg
id msgfrom msgto msg createtime
1 8001(我) 8002 你好 2013-06-24 16:07
2 8001(我) 8002 你在吗 2013-06-24 16:13
3 8002 8001(我) nihao 2013-06-24 16:20
4 8001(我) 8003 HELLO 2013-06-25 10:07
5 8003 8001(我) HEHE 2013-06-25 15:07
6 8003 8001(我) 哈哈 2013-06-25 18:21
7 8001(我) 8003 哈哈 2013-06-25 19:21

从表msg中查询出我与其他人通信的最新记录,例如下表。当然有1000多个人在短信通信,这里只列出两个而已
id msgfrom msgto msg createtime
7 8001(我) 8003 哈哈 2013-06-25 19:21
3 8002 8001(我) nihao 2013-06-24 16:20

请问要查询出这样的结果,该怎么写SQL语句,我非常痛苦,恳求各位高手能给我个能实现上述效果的SQL语句,谢谢各位了!
...全文
230 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵云十八般 2013-06-29
  • 打赏
  • 举报
回复
select * from msg where msgfrom=8001 or msgto=8001 order by createtime;
yilin_123 2013-06-28
  • 打赏
  • 举报
回复
都不知道你想要的结果到底是什么样的,看你的图感觉前面的都学错,你先解释一下想要的结果是什么样的吧!
zcbenniao 2013-06-25
  • 打赏
  • 举报
回复
不好意思刚弄明你要干什么,应该是下边这个。没测试,但思路应该正确 SELECT * FROM MSG INNER JOIN ( SELECT MAX(T1.ID) AS MAXID FROM( SELECT ID, CASE WHEN(MSGFROM='8001',MSGTO,MSGFROM) AS OTHER, FROM MSG WHERE MSGFROM = '8001' OR MSGTO = '8001' ) T1 GROUP BY T1.OTHER ) T2 ON MSG.ID =T2.MAXID
wwwwb 2013-06-25
  • 打赏
  • 举报
回复
SELECT * FROM msg A WHERE NOT EXISTS(SELECT 1 FROM msg WHERE A.msgfrom=msgfrom AND A.createtime<createtime)
Rotel-刘志东 2013-06-25
  • 打赏
  • 举报
回复
select id,msgfrom ,msgto,msg,createtime from msg where msgfrom='8001' or msgto='8001' order by createtime;
zcbenniao 2013-06-25
  • 打赏
  • 举报
回复
SELECT * FROM MSG WHERE msgfrom = '8001' OR msgto = '8001' ORDER BY createtime LIMIT 0,N 这个SQL可以取到最新的联络记录,N是取几条
lxp642 2013-06-25
  • 打赏
  • 举报
回复
只列出两个而已 select * from msg where id in (7,3) order by id esc;
ACMAIN_CHM 2013-06-25
  • 打赏
  • 举报
回复
引用 7 楼 u011199912 的回复:
各位大师,高手,我试过你们给的建议了,可都达不到想要的结果啊,拜托啊!有没有试验过,有效的方法!谢谢各了!
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
WWWWA 2013-06-25
  • 打赏
  • 举报
回复
相同msgfrom最大createtime?
kingkongzxl 2013-06-25
  • 打赏
  • 举报
回复
各位大师,高手,我试过你们给的建议了,可都达不到想要的结果啊,拜托啊!有没有试验过,有效的方法!谢谢各了!
ACMAIN_CHM 2013-06-25
  • 打赏
  • 举报
回复
select * from msg m where (msgfrom='8001(我)' or msgto='8001(我)') and not exists (select 1 from msg where msgfrom='8001(我)' and msgto=m.msgto and createtime>=m.createtime) and not exists (select 1 from msg where msgto='8001(我)' and msgfrom=m.msgfrom and createtime>=m.createtime)

56,682

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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