mysql使用leftjoin为两个匹配行选择最新时间戳
我在MySQL中有两个表 日志表包含以下列:时间、用户id、事件类型 users表有以下列:email、id 每次用户登录到生成日志文件的系统时,都会使用值“/dashboard”记录事件类型列值 这里的select语句将在他们每次登录时显示我的mysql使用leftjoin为两个匹配行选择最新时间戳,mysql,sql,Mysql,Sql,我在MySQL中有两个表 日志表包含以下列:时间、用户id、事件类型 users表有以下列:email、id 每次用户登录到生成日志文件的系统时,都会使用值“/dashboard”记录事件类型列值 这里的select语句将在他们每次登录时显示我的 SELECT users.email, logs.time FROM users LEFT JOIN logs ON users.id=logs.user_id WHERE logs.event_type LIKE '/dashboard' G
SELECT users.email, logs.time
FROM users
LEFT JOIN logs ON users.id=logs.user_id
WHERE logs.event_type LIKE '/dashboard'
GROUP BY email, time;
…但我想返回一个结果集,该结果集仅显示每个用户第一次登录时的电子邮件地址和时间戳。您可以使用
min
:
SELECT users.email, min(logs.time)
FROM users
INNER JOIN logs ON users.id=logs.user_id
WHERE logs.event_type LIKE '/dashboard'
GROUP BY email;
也不需要外部联接
——您在where
标准中否定了这一点。如果要保留外部联接
并返回在日志
表中可能没有匹配记录的用户,请将条件移动到上的:
SELECT users.email, min(logs.time)
FROM users
LEFT JOIN logs ON users.id=logs.user_id
AND logs.event_type LIKE '/dashboard'
GROUP BY email;
你的回答中提供的两个例子都很有魅力,谢谢!内部连接只需3秒即可执行,而左侧连接只需1分28秒。我感谢你的快速帮助!