日期:2014-05-17  浏览次数:20689 次

sql查询分组,排序问题
SELECT c.UserId AS id, u.userimg AS img, u.UserName AS name, 
      c.CommentContent AS comment, c.CommentTime AS time, c.PostId, 
      c.MsgType AS mt
FROM tb_Comment c INNER JOIN
      tb_User u ON c.UserId = u.UserId
WHERE (c.PostId = 95)
GROUP BY c.UserId, u.userimg, u.UserName, c.CommentContent, c.CommentTime, 
      c.PostId, c.MsgType
ORDER BY c.UserId, c.CommentTime

查询结果:
结果已经按照用户名,时间分类,但是时间排序不正确,分好后的组(如:vip1,vip2...)的时间确实是按照时间升序排列的,但是vip1,vip2,vip3..的首行时间是没有排序的,我想要这个时间也按照升序排列,该怎么做呀?

------解决方案--------------------
引用:
vip1,vip2,vip3..的首行时间是没有排序 是什麽意思/


他的意思是 name = vip1,vip2,vip3 的首行时间是没有排序
------解决方案--------------------
做不到,因为你那个不是一条数据,而是一组数据。
------解决方案--------------------

SELECT c.UserId AS id, u.userimg AS img, u.UserName AS name, 
      c.CommentContent AS comment, c.CommentTime AS time, c.PostId, 
      c.MsgType AS mt
FROM tb_Comment c INNER JOIN
      tb_User u ON c.UserId = u.UserId 
  join (select UserId,min(commentTime) minTime from tb_comment  group by UserId ) as x
  on c.UserId=x.UserId
WHERE (c.PostId = 95)
GROUP BY c.UserId, u.userimg, u.UserName, c.CommentContent, c.CommentTime, 
      c.PostId, c.MsgType
ORDER BY x.minTime,c.UserId, c.CommentTime

大概是這樣了,沒優化,沒測試.但原理對的