sql - 如何选择 WHERE .. IN 子句中每个元素的前 n 个结果

标签 sql ms-access

我有一个包含多个计算机名称和连接日期的表。这是一个例子。

ID    Computer         User         Date         
------------------------------------------------
1      O-1234          User1         2010-07-08        
2      O-1234          User2         2010-08-24           
3      O-1234          User2         2010-09-25
4      O-1555          User3         2010-08-24           
5      O-1555          User3         2010-09-25      

我希望只能为每台计算机选择最后 2 或 3 个连接。另外,我无法修改表格。有人有想法吗?

谢谢

编辑:这是一个 MS Access mdb 文件

EDIT": 由于 RANK OVER() 不能在 MS Access 中使用,是否可以使用临时表来完成这项工作?

最佳答案

SELECT *
FROM (
    SELECT ID, Computer, User, Date,
    RANK() OVER ( PARTITION BY Computer ORDER BY Date DESC) AS RowNumber
    FROM YourTable)
WHERE RowNumber <= 3

编辑:哦...这是 Access。

我无权 Access ...呃... Access 权限,但可以试试这个吗?

SELECT
    logins.ID,
    logins.Computer,
    logins.User,
    logins.Date,
    COUNT(*)
FROM
    YourTable logins INNER JOIN
    YourTable Subsequentlogins ON
        logins.Computer = Subsequentlogins.Computer
        AND logins.Date <= Subsequentlogins.Date
GROUP BY
    logins.ID,
    logins.Computer,
    logins.User,
    logins.Date
HAVING COUNT(*) <= 3

关于sql - 如何选择 WHERE .. IN 子句中每个元素的前 n 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6522748/

相关文章:

sql - 当 SQL 中的两个值具有不同的数据类型时,如何将它们与给定的小数精度进行比较?

mysql - 从 Access VBA 中的查询创建表

.NET 到远程 SQL Server 在一台计算机上速度较慢,在另一台计算机上则不然

vba - 逐个字母比较 2 个相似的字符串并突出显示差异

ms-access - 无法同时打开超过一毫秒的 access 2013 数据库

python - 使用 PyODBC 选择表中的列名

mysql - 三表连接的结果不正确

sql - 使用单个 PL SQL 查询返回多个计数

MySql Access VB

c# - 将 MS Access 数据库转换为 Web 应用程序的简便方法