更新符合条件的最后一条

anycpu 2012-04-10 11:32:37
Update OP_AD_Statistics Set StaADSource='xxxx', StaClickNum= 2 Where StaID =(Select StaID from OP_AD_Statistics Where StaADSource='xxxx' order by StaID )
这样会报错 除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效,怎么改呢
...全文
60 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
SQL777 2012-04-10
  • 打赏
  • 举报
回复
Update OP_AD_Statistics a Set StaADSource='xxxx', StaClickNum= 2 Where dt= (Select max(dt) from OP_AD_Statistics Where StaADSource='xxxx' and a.StaID =StaID )

你要按什么来算最后一条。这个表的最后一条?以上是StaID 相同,dt最大的
Andy-W 2012-04-10
  • 打赏
  • 举报
回复
;With cte_update As 
(
/*n 控制要更新的行数*/
Select Top (n) * From OP_AD_Statistics Where StaADSource='xxxx' Order by StaID
)
update cte_update
Set StaADSource = 'xxxx' ,
StaClickNum = 2
  • 打赏
  • 举报
回复
你得把你的排序拿到外面或者加上top之类的。

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧