2011-05-17 76 views
0

我試圖根據另一個表中的用戶標識更新表。我遇到了從語法更新,但我努力正確地寫我的查詢。sql server 2005從'查詢'更新

下面的代碼應該告訴你我正在嘗試做什麼。當我運行它時,我得到0行受到影響。

update jared_test 
     set user_count = 1 
     from new_user nuj 
inner join (select us.userID 
       from users us 
      where us.email = '[email protected]') u on nuj.userid = u.userid 

/* ** * ** * *EDIT* ** * ** * ** * ** * ** * ** * \

我發現有一個問題,我的Cursor循環阻止了它的工作,所以這確實有效。然而,如果在這種情況下優化比哪裏更好,我會感興趣。

+0

從用戶中選擇us.userID我們在哪裏us.email ='[email protected]'是否有任何價值? – Nighil 2011-05-17 11:23:53

回答

0

我不是爲什麼其他的解決方案是使用子查詢100%,這將執行比普通的要慢加入最經常。儘管taos子查詢本質上是一個有趣的常規連接。

update aliasName 
set aliasName.user_count =1 
from new_user aliasName 
inner join users u on aliasName.userid = u.userid 
where email = '[email protected]' 
1
update jared_test 
set user_count = 1 
where userid = 
    (select userID from users where email = '[email protected]') 

試試這個

+0

這將不得不通過文本電子郵件列來匹配users表中的用戶,這可能不會被編入索引...基於new_user.userid等於users.userid和users.email,加入用戶當然更容易和更快速='[email protected]' – iandayman 2011-05-17 12:35:52

0

你似乎並不被建立表之間的「jared_test」,而要通過選擇兩個表,「new_user/NUJ」和「用戶/我們」無任何關係。

您的意思是?

update nuj 
set user_count = 1 
from new_user nuj 
inner join (select us.userID 
      from users us 
      where us.email = '[email protected]') u on nuj.userid = u.userid 

(如果是這樣,一個標準更新爲@Devan建議會更有意義)