//多表查询:得到最新的数据后再执行多表查询 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)