我有一个查询,显示用户列表和他们的最后登录日期。它适用于“如果”他们有登录历史,但如果他们没有登录历史记录,则不包括他们。即使他们没有登录历史记录,我如何让所有用户显示?MySQL仅选择一条记录加入,包括不匹配
SELECT SQL_CALC_FOUND_ROWS growers.*,ld2.ip,ld2.login_date as last_login
FROM growers
LEFT JOIN (
SELECT *
FROM log_logins
WHERE user_type = "grower"
ORDER BY login_date DESC
)
as ld2 ON (ld2.user_id = growers.id)
GROUP BY user_id
ORDER BY growers.id DESC
我虽然“左”连接将包括他们,即使连接不匹配任何东西,但它没有。另一件我不明白的事情是,当我删除所有日志记录时,这个查询总是返回1个用户?
感谢您的帮助。
你需要一个左'OUTER'加入。 –
自己使用LEFT JOIN没有错......您是否返回单个NULL记录?尝试返回growers.id而不是ld2.id. – sgeddes
@BobFincheimer LEFT OUTER join没有改变查询的结果。 – Danny