MySQL为联接表中的每一行提供结果

时间:2018-07-17 16:28:29

标签: mysql join max

我一直在尝试使用JOIN执行查询以提高性能。 当前,将执行一个查询以检索所有记录,然后针对每个记录执行另一个查询以获取已完成的特定步骤。

我有两个表,如下所示:

用户:

id - name - email
------------------
1 - alex - a@b.com

步骤:

id - userId - step - date
-------------------------------
1  -   1    -   1  - 2018/01/01
2  -   1    -   2  - 2018/02/02
3  -   1    -   3  - 2018/03/03

现在我用来抓取所有用户及其各自步骤的查询是:

SELECT u.id, u.name, u.email, s.step, s.date
FROM users u
LEFT JOIN steps s ON s.userId = u.id

但这会返回:

id - name - step - date
-------------------------------
1  -  alex  -   1  - 2018/01/01
2  -  alex  -   2  - 2018/02/02
3  -  alex  -   3  - 2018/03/03

我只对最后一个结果感兴趣,我相信我应该使用某种子查询?还有MAX(s.date)函数?

1 个答案:

答案 0 :(得分:1)

你是正确的

Where steps.id IN (select 
MAX(id) from 
steps group by user userid)

这假设您的MAX(id)步长始终是最合适的日期。