- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 SQL Server 查询/函数有一个奇怪的行为。
我有一个包含 3 列的表格(实际上还有更多列,但这 3 列与此任务相关)。这些列是 FileId
、UserId
和 TimeCreated
。有可能一个用户可以多次创建相同的 FileId
,我想知道哪个是最新创建的文件。
我正在用这个 WHERE
子句来做:
WHERE TimeCreated IN (SELECT MAX(TimeCreated)
FROM table
GROUP BY FileId, UserId)
在我看来这应该是正确的,但对于某些组,即使 TimeCreated
不同,它也会返回多行。
这里有一个结果作为例子:
TimeCreated | UserId | FileId
------------------------------------------------------
2016-01-18 00:00:00.000 | UserA | FileA
2016-01-18 06:00:00:000 | UserA | FileA
但它应该只返回带有 '2016-01-18 06:00:00:000' 作为 TimeCreated
值的行。
我不明白出了什么问题,因为有更多的条目,其中有 UserA(作为 UserId)和 FileA(作为 FileId)但不同的 TimeCreated 值但它只返回这两行(所以在某种程度上,它非常有效)并且就像我说的那样,对于某些组来说没问题,但有时它会返回两行,它们具有相同的 UserId 和 FileId 但具有不同的 TimeCreated 值。当发生这种情况时,它总是两行而不是更多。
TimeCreated
是一个DateTimeOffset(7)
,UserId
是一个字符串以及FileId
。也许知道这一点很重要...
有人能解释为什么会这样吗?
最佳答案
你应该改用这个语法:
;WITH CTE as
(
SELECT
*,
row_number() over (partition by FileId, UserId ORDER BY TimeCreated DESC)rn
FROM <table>
)
SELECT * FROM CTE
WHERE rn = 1
关于sql-server - 获取最新条目的 SQL Server 返回错误结果。我错过了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37724611/
我无法在附加行中显示“真”、“假”、"is"和“否”按钮。 我在这里有一个应用程序:Application 请按照以下步骤使用应用程序: 1。当你打开应用程序时,你会看到一个绿色的加号按钮,点击 在此
我是一名优秀的程序员,十分优秀!