mysql - 多个子查询结果进入主查询,select in select

标签 mysql

确定有2张 table

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

请帮忙

最佳答案

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

在您的示例中,您列出了前三个记录,而不是后三个。顺便说一下,如果需要,您只需将 desc 添加到 group_concat 中的 order 子句即可。

关于mysql - 多个子查询结果进入主查询,select in select,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8303666/

相关文章:

mysql - 当我尝试运行代码时,引用的字符串未正确终止

php - mysql中的搜索查询优化

php - Eloquent 关系 - 查询行到列

c# - 在两个 IP 地址之间做出选择

python - 弱引用对象不再存在使用 python 和 mysql

android - 同步 SQL 和 SQlite 数据库

mysql - Laravel:hasMany 关系 + where 条件失败

java - 确定我的代码是否包含硬编码的 SQL 查询?

java - 在多线程环境中处理事务

javascript - 跨模式事务序列化