1 mysql sql select group-by greatest-n-per-group
我的数据库中有2个表:
log_visitors:
--------------------
id | host_id
log_access:
--------------------
visitor | document | timestamp
Run Code Online (Sandbox Code Playgroud)
log_access.visitor 链接到 log_visitors.id
目前,我正在使用此查询:
SELECT
log_visitors.host_id
, MIM(log_access.timestamp) AS min_timestamp
FROM
log_access
INNER JOIN log_visitors
ON (log_access.visitor = log_visitors.id)
GROUP BY log_visitors.host_id;
Run Code Online (Sandbox Code Playgroud)
获取数据库中的MIN(timestamp)每个host_id.
这是我的问题:
我还需要document使用该时间戳来获取该访问权限...我不能简单地添加log_access.document到SELECT列表中,因为它不是常量而我不按文档分组...任何想法?
您没有指定DBMS,但这是ANSI SQL(适用于大多数现代DBMS)
select *
from (
SELECT log_visitors.host_id,
log_visitors.document,
log_access.timestamp
min(log_access.timestamp) OVER (partition by log_visitors.host_id) AS min_timestamp
FROM log_access
JOIN log_visitors ON (log_access.visitor = log_visitors.id)
) t
where t.timestamp = t.min_timestamp
ORDER BY host_id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |