2011-05-17 10 views
0

別のテーブルのユーザーIDに基づいてテーブルを更新しようとしています。私は構文から更新を見つけましたが、私は正しくクエリを書くのに苦労しています。sql server 2005 'update from'クエリ

以下のコードは、私が何をしようとしているかを示します。私がそれを実行すると、影響を受ける行が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ループで問題が発生していることが判明したため、実際には機能しませんでした。しかし、私は最適化のために、この例のfromよりもwhereが良い場合には興味があります。

+0

ここからus.userIDを選択します。us.email = '[email protected]'は値がありますか? – Nighil

答えて

0

私は他のソリューションが参加し、通常よりも遅く実行します副選択を使用している理由には100%ではありませんよよく。 taos subselectは基本的には面白く書いた定期的な参加ですが。

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

これは索引付けされていないテキスト電子メール列によってユーザーテーブルのユーザーと一致する必要があります... new.user.useridがusers.useridに等しいことに基づいてユーザーにJOINするのがはるかに簡単で迅速ですusers.email = '[email protected]' – iandayman

0

あなたが「jared_test」とあなたがすることによって選択されている2つのテーブル、「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がより理にかなって示唆したように、標準更新)