我在MySQL中有两个表。
日志表包含列:time,user_id,event_type
用户表包含以下列:email,id
每次用户登录到生成日志文件的系统时,都会记录event_type列值,其值为“/ dashboard”。
此处的select语句将显示我他们登录的每个时间......
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;
...但我想返回结果集,该结果集仅显示每个用户登录时的的电子邮件地址和时间戳。
答案 0 :(得分:3)
您可以使用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;
也不需要outer join
- 您在where
条件中否定了这一点。如果您想保留outer join
并返回logs
表中可能没有匹配记录的用户,请将条件移至on
:
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;