首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

收藏此问题 发表新评论

一个联合查询并排序的问题

请教一个联查并排序的问题,现在的问题是排序不对。
表A   col1, col2, col3
表B   col1, col4, col5

两个表通过col1联结,其中表B中col5是时间戳。表A是某人的个人信息,每条记录是唯一的,表B是某人的一些行动信息,每个时间会有不同的记录。现在我要查出按最后有活动的4个人。
引用:

SELECT a.col1, a.col2, a.col3
  FROM a
  INNER JOIN b ON a.col1 = b.col1
  GROUP BY a.col1
  ORDER BY b.col5 DESC
  LIMIT 0 , 4
但是这样查出来的顺序不对,因为这里查出来的时间不是最后的活动时间,而是最开始的时间。请教高人,怎么样能查出我想要的那种结果?
昵称: anyforever  时间: 2008-07-13 16:44:00
好几天了,没人帮解答啊?
昵称: anyforever  时间: 2008-07-15 09:34:00
复制PHP内容到剪贴板
PHP代码:
SELECT a.col1a.col2a.col3,max(b.col5)
  
FROM a
  INNER JOIN b ON a
.col1 b.col1
  GROUP BY a
.col1a.col2a.col3
  ORDER BY MAX
(b.col5DESC 
  LIMIT 4


昵称: coolstr  时间: 2008-07-15 14:06:00
谢谢版主啊,结果还是不对。奇怪了。那时间还不是最后一个。
昵称: anyforever  时间: 2008-07-16 15:21:00
select * from a,(select col1,max(col5) as maxtime from b group by col1)test where test.col1 = a.col1 order by maxtime desc limit 4;

select a.col1,max(col5) as maxtime from a,b where a.col1 = b.col1 group by a.col1 order by maxtime desc limit 4;

[ 本帖最后由 devotedsky 于 2008-7-16 16:02 编辑 ]
昵称: devotedsky  时间: 2008-07-16 15:52:00
第一条正确,第二条不对。谢谢楼上的啊。呵呵。
昵称: anyforever  时间: 2008-07-16 20:26:00