sql server 2005'从'查询更新

时间:2011-05-17 11:01:10

标签: sql sql-server-2005 sql-update

我正在尝试根据另一个表中的用户ID更新表。我从语法中遇到了更新,但我正在努力正确地编写查询。

以下代码应该显示我正在尝试做的事情。当我运行它时,我会受到0行影响。

    update jared_test
       set user_count  = 1
      from new_user nuj
inner join (select us.userID
              from users us
             where us.email = 'j@j.co.uk') u on nuj.userid = u.userid

/ * ** * ** * * 修改 * ** * ** * ** * ** * * * * ** * \

我发现我的Cursor循环出现问题导致无法正常工作,所以这确实有效。但是,我感兴趣的是,在这种情况下,哪个地方优于来自优化的地方。

3 个答案:

答案 0 :(得分:1)

update jared_test
set user_count = 1
where userid = 
  (select userID from users where email = 'j@j.co.uk')

试试这个

答案 1 :(得分:0)

您似乎没有在表“jared_test”和您选择的两个表“new_user / nuj”和“users / us”之间建立任何关系。

你的意思是?

update nuj
set user_count  = 1
from new_user nuj
inner join (select us.userID
            from users us
            where us.email = 'j@j.co.uk') u on nuj.userid = u.userid

(如果是这样,@ Devan建议的标准更新会更有意义)

答案 2 :(得分:0)

我不是百分之百地说明为什么其他解决方案使用的子选择通常比常规连接慢。虽然taos subselect本质上是一个有趣写的常规连接。

update aliasName
set aliasName.user_count =1 
from new_user aliasName
inner join users u on aliasName.userid = u.userid
where email = 'j@j.co.uk'