//多表查詢:得到最新的數據后再執行多表查詢
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)
補充: 通過最大時間 然后再聯合查詢出其它信息,實現避免分組排序的問題。(多個子查詢實現功能)
'SELECT gt.time, gt.name_id, gt.goutong,gt.operator, st.id,st.Stu_name,st.Stu_sex,st.stu_gongsi,st.stu_waishangke,st.Stu_jjcourse,st.Stu_phone,st.Stu_beizhu FROM jingjie_students AS st RIGHT JOIN (SELECT A.* FROM jingjie_goutong A, (SELECT name_id,MAX(goutong_time) goutong_time FROM jingjie_goutong WHERE operator = '小明' GROUP BY name_id) B WHERE A.name_id = B.name_id AND A.time = B.time ORDER BY A.time DESC LIMIT 0,10) gt ON st.id = gt.name_id';