2013-05-29 119 views
0

我想用新的friendlyurl值更新表[列表]中的所有行。而不是通過所有記錄循環的,我想我也能做到這一點,像這樣:更新多行拋出無法綁定多部分標識符

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

,但我得到的最後一行的錯誤:

多部分組成的標識符vars1.title無法綁定。

我該如何糾正上述說法才能正常工作?

回答

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

+0

可能是一個愚蠢的問題,但什麼是CTE? – nurdglaw

+0

@nurdglaw [Common Table Expression](http://msdn.microsoft.com/zh-cn/library/ms190766(v = sql.105).aspx)類似於派生表,但可以自引用 – Taryn

+0

感謝響應! – nurdglaw

相關問題