码迷,mamicode.com
首页 > 数据库 > 详细

mysql多表查询及其 group by 组内排序

时间:2015-09-23 13:25:05      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:

 

//多表查询:得到最新的数据后再执行多表查询

SELECT *
FROM `students` `st` RIGHT JOIN( SELECT * FROM
  (
    SELECT * FROM goutong WHERE goutongs=‘asdf‘ ORDER BY time DESC
  
) AS gtt GROUP BY gtt.name_id ORDER BY gtt.goutong_time DESC ) gt
  ON `gt`.`name_id`=`st`.`id` LIMIT 10

 

//先按时间排序查询,然后分组(GROUP BY ) 
SELECT
* FROM   (     SELECT * FROM goutong WHERE goutongs=asdf ORDER BY time DESC  ) AS gtt GROUP BY gtt.name_id ORDER BY gtt.time DESC

 

 

参考:http://blog.csdn.net/shellching/article/details/8292338

有数据表 comments
------------------------------------------------
| id | newsID | comment | theTime |
------------------------------------------------
| 1  |        1      |         aaa    |     11       |
------------------------------------------------
| 2  |        1      |         bbb    |     12       |
------------------------------------------------
| 3  |        2      |         ccc     |     12       |

------------------------------------------------

newsID是新闻ID,每条新闻有多条评论comment,theTime是发表评论的时间

现在想要查看每条新闻的最新一条评论:


select * from comments group by newsID 显然不行


select * from comments group by newsID order by theTime desc 是组外排序,也不行


下面有两种方法可以实现:

(1)
selet tt.id,tt.newsID,tt.comment,tt.theTime from(  
select id,newsID,comment,theTime from comments order by theTime desc) as tt group by newsID 


(2)
select id,newsID,comment,theTime from comments as tt group by id,newsID,comment,theTime having
 theTime=(select max(theTime) from comments where newsID=tt.newsID)

mysql多表查询及其 group by 组内排序

标签:

原文地址:http://www.cnblogs.com/hubing/p/4831836.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!