2009-04-19 136 views
0

使用subquerys我有一个触发以下SQL语句删除对火灾:在Update语句

UPDATE bk2_InfoPages 
SET SortOrder = SortOrder - (SELECT COUNT(*) FROM Deleted d WHERE d.SortOrder <= SortOrder) 

我的问题是,最后SortOrderDeleted桌上,而不是到bk2_InfoPages表。我不允许在bk2_InfoPages表中添加别名,因为它是UPDATE声明 - 所以我应该怎么做?

回答

1

这应该工作:

UPDATE b 
SET SortOrder = SortOrder - 
    (SELECT COUNT(*) FROM Deleted d WHERE d.SortOrder <= b.SortOrder) 
from bk2_InfoPages b 

你有别名的表做子查询,例如:

-- this executes fine 
create table #t (t int) 

update t 
set t = (select count(*) from #t t1 where t.t = t1.t) 
from #t t 
+0

这个伎俩!谢谢! =) – 2009-04-19 02:03:11

2
UPDATE bk2_InfoPages 
SET SortOrder = SortOrder - (SELECT COUNT(*) FROM Deleted d WHERE d.SortOrder <= bk2_InfoPages.SortOrder) 
+0

不幸的是我试图执行时出现以下错误信息ALTER TRIGGER语句:“多部分标识符”bk2_InfoPages.SortOrder“无法绑定。” – 2009-04-19 01:39:19