2011-11-28 326 views
1

确定有2个表多个子查询结果到主查询,选择选择

user_id login_history 
1  2011-01-01 
1  2011-01-02 
1  2011-03-05 
1  2011-04-05 
1  2011-06-07 
2  2011-01-01 
2  2011-01-02 
3  2011-03-05 
3  2011-04-05 
3  2011-06-07 


user_id user_details 
1  Jack 
2  Jeff 
3  Irin 

我可以使用什么样的查询来获得像

1. Jack 2011-01-01 2011-01-02 2011-03-05 
2. Jeff 2011-01-01 2011-01-02 
3. Irin 2011-03-05 2011-04-05 2011-06-07 

结果基本上我想从最新的3条表1并与表2联合

查询我使用会得到我一个列表,这是垂直记录

Jack ,2011-01-01 
Jack ,2011-01-02 
Jack ,2011-03-05 

Jeff ,2011-01-01 
Jeff ,2011-01-02 

Irin ,2011-03-05 
Irin ,2011-04-05 
Irin ,2011-06-07 

请帮

回答

1
select t2.user_details, 
substring_index(group_concat(login_history order by login_history separator ' '),' ',3) as recents 
from table_2 as t2 
left join table_1 as t1 
on t1.user_id = t2.user_id 
group by t2.user_id 
在你的榜样

你列出前三的记录,而不是最后三个。顺便说一句,如果你需要它,你只需要在group_concat中的order子句中添加desc。

+0

谢谢你堆...这解决了难题~~ 这是一个神秘的高级功能,我从来没有听说过:) –