与用户名匹配且日期最长的SQL更新条目

时间:2012-10-15 22:42:10

标签: sql sql-server sql-server-2008

我的数据库中有一个表saved_offers。我想要做的是找到与用户名匹配的所有内容,并在这些结果中找到具有最高date字段的内容。

这是一个更简单的例子:说我们有一个表baseball_players。我希望找到为洋基队效力最高的球员,并且更新他的description场以说“击球率最高”。

我无论如何都不是SQL大师,所以如果这太容易了,我会道歉。

我在我的update语句中尝试过几乎所有嵌套SELECT和ORDERBY的组合,但到目前为止我找不到有效的命令。

1 个答案:

答案 0 :(得分:1)

update t a set x = 1 where
a.user = 1 and a.id =
(select top 1 b.id from t b where b.user = a.user and b.date =
(select max(c.date) from t c where c.user = b.user) order by b.id)

如果最大日期出现在多个记录中,则只会更新其中一个。当您想要在最高值之间打破平局并且不关心选择哪个时,这非常有用。