这个问题在这里已有答案:
我一直在尝试使用JOIN执行查询以提高性能。目前,将执行一个查询以检索所有记录,然后对于每个记录执行另一个查询以获取完成的特定步骤。
我有两个表,看起来像这样:
用户:
id - name - email
------------------
1 - alex - [email protected]
脚步:
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)功能?
你是对的
Where steps.id IN (select
MAX(id) from
steps group by user userid)
假设您的MAX(id)步骤始终是最大的日期。