我的数据库中有一个表saved_offers
。我想要做的是找到与用户名匹配的所有内容,并在这些结果中找到具有最高date
字段的内容。
这是一个更简单的例子:说我们有一个表baseball_players
。我希望找到为洋基队效力最高的球员,并且更新他的description
场以说“击球率最高”。
我无论如何都不是SQL大师,所以如果这太容易了,我会道歉。
我在我的update语句中尝试过几乎所有嵌套SELECT和ORDERBY的组合,但到目前为止我找不到有效的命令。
答案 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)
如果最大日期出现在多个记录中,则只会更新其中一个。当您想要在最高值之间打破平局并且不关心选择哪个时,这非常有用。