SQL,查询以检查并列出在特定时间范围内另一个表中出现的不同条目

SQL,查询以检查并列出在特定时间范围内另一个表中出现的不同条目,sql,oracle,Sql,Oracle,我在用甲骨文 我有两张桌子。一个包含用户,另一个是各种访问日志。我需要列出在指定时间范围内其最新日志条目出现在日志中的所有用户,包括最新条目的时间戳。单个用户可以在日志中有多个条目 以下是表格的简化版本: 使用者 日志 如果时间范围设置为最后六个月,则期望结果: |---------------------------------------| | username | name | timestamp | |--------------------------|------

我在用甲骨文

我有两张桌子。一个包含用户,另一个是各种访问日志。我需要列出在指定时间范围内其最新日志条目出现在日志中的所有用户,包括最新条目的时间戳。单个用户可以在日志中有多个条目

以下是表格的简化版本:

使用者

日志

如果时间范围设置为最后六个月,则期望结果:

|---------------------------------------|
| username | name          | timestamp  |
|--------------------------|------------|
| miwi     | Mike Williams | 20-01-2020 |
| lajo     | Laura Jones   | 19-11-2019 |
| subo     | Susan Brown   | 15-09-2019 |
|---------------------------------------|

非常感谢您的帮助。

您可以使用聚合:

select u.username, u.userid, max(l.timestamp)
from logs l join
     users u
     on l.userid = u.userid
group by u.username, u.userid
having max(l.timestamp) >= add_months(sysdate, -6)

“谁的最新日志条目在指定的时间范围内出现在日志中”因此,如果用户的最新条目不在该时间范围内,您不想显示它们吗?例如,时间跨度2019-01-01至2019-06-30。lajo的最新作品是2019-11-19,它不在框架内。因此,您不会在结果中显示lajo。对吗?是的,这是对的。如果用户的最新输入不在时间范围内,则会从结果中忽略。那么Gordon的答案应该适用于您。
|---------------------------------------|
| username | name          | timestamp  |
|--------------------------|------------|
| miwi     | Mike Williams | 20-01-2020 |
| lajo     | Laura Jones   | 19-11-2019 |
| subo     | Susan Brown   | 15-09-2019 |
|---------------------------------------|
select u.username, u.userid, max(l.timestamp)
from logs l join
     users u
     on l.userid = u.userid
group by u.username, u.userid
having max(l.timestamp) >= add_months(sysdate, -6)