更新多行抛出无法绑定多部分标识符

时间:2013-05-29 21:11:44

标签: sql-server tsql sql-update

我想用新的friendlyurl值更新表[listing]中的所有行。而不是循环遍历所有记录,我认为我也可以这样做:

;WITH vars1 AS (
SELECT title FROM listings where listingtype=2 order by createdate desc)
UPDATE listings set friendlyurl=REPLACE(LOWER(vars1.title),' ','-') 

但是我在最后一行得到了错误:

无法绑定多部分标识符vars1.title。

如何按照我的意愿更正上述说法?

1 个答案:

答案 0 :(得分:2)

如果您想使用CTE进行更新,则可以使用:

;with vars1 as
(
  select title, friendlyUrl
  from listings
  where listingtype=2 
) 
update vars1 
set friendlyurl = REPLACE(LOWER(vars1.title),' ','-');

但你可以在没有CTE的情况下做到这一点:

update listings
set friendlyurl = REPLACE(LOWER(title),' ','-')
where listingtype=2;

请参阅Demo with both queries