【问题标题】:Exclude records where count > 5 and select top 1 of it排除 count > 5 的记录并选择其中的前 1 个
【发布时间】:2021-04-14 16:08:54
【问题描述】:

我想排除 id > 5 的记录,然后选择它的前 1 个按日期排序。我怎样才能做到这一点?每条记录都有 audit_line,它是每条记录的唯一字段。最近的 SQL 脚本在下面:

SELECT * 
FROM db.table 
HAVING COUNT(id) > 5

【问题讨论】:

标签: sql sql-server tsql


【解决方案1】:

如果你想要id > 5,那么你想要where

select top (1) t.*
from db.table t
where id > 5
order by date;

【讨论】:

  • 嗨,这个查询只会获取 id > 5。需要一个查询来获取 where count(id) > 5。然后排除 4 条记录,然后获取它的前 1 条记录。
【解决方案2】:

您可以为此使用行编号。

请注意,如果您没有其他列可供订购,您可以使用ORDER BY (SELECT NULL),但每次运行时您可能会得到不同的结果。

SELECT *
FROM (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY some_other_column) rn
    FROM table
) t
WHERE rn = 5;

【讨论】:

    猜你喜欢
    • 2020-03-12
    • 2011-09-25
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2019-03-20
    相关资源
    最近更新 更多