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

wz3gfoph  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(219)

这个问题在这里已经有答案了

sql仅选择列上具有最大值的行[重复](27个答案)
两年前关门了。
我一直在尝试使用连接执行查询以提高性能。当前,将执行一个查询来检索所有记录,然后对每个记录执行另一个查询来获取完成的特定步骤。
我有两张table,看起来像这样:
用户:

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)函数?

hujrc8aj

hujrc8aj1#

你说得对

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

这假设你的最大(id)步长永远是最长的日期。

相关问题