多个子查询结果进入主查询,在select中选择

时间:2011-11-28 23:05:56

标签: mysql

确定有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

基本上我想从表1中获取最新的3条记录并与表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 个答案:

答案 0 :(得分: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。