+ -
当前位置:首页 → 问答吧 → 一个联合查询并排序的问题

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

时间:2008-07-14

来源:互联网

请教一个联查并排序的问题,现在的问题是排序不对。
表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

好几天了,没人帮解答啊?

作者: anyforever   发布时间: 2008-07-15

复制PHP内容到剪贴板
PHP代码:
SELECT a.col1, a.col2, a.col3,max(b.col5)
  FROM a
  INNER JOIN b ON a.col1 = b.col1
  GROUP BY a.col1, a.col2, a.col3
  ORDER BY MAX(b.col5) DESC 
  LIMIT 4

作者: coolstr   发布时间: 2008-07-15

谢谢版主啊,结果还是不对。奇怪了。那时间还不是最后一个。

作者: anyforever   发布时间: 2008-07-16

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

第一条正确,第二条不对。谢谢楼上的啊。呵呵。

作者: anyforever   发布时间: 2008-07-16

热门下载

更多