SQL Server 2005 «обновление из» запроса - PullRequest
0 голосов
/ 17 мая 2011

Я пытаюсь обновить таблицу на основе идентификатора пользователя из другой таблицы. Я столкнулся с обновлением по синтаксису, но изо всех сил пытаюсь правильно написать свой запрос.

Приведенный ниже код должен показать вам, что я пытаюсь сделать. Когда я запускаю его, меня затрагивают 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

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

Я обнаружил, что была проблема с моим циклом Курсора, который мешал этому работать, так что это действительно работает. Тем не менее, мне было бы интересно, если где лучше, чем от в этом случае для оптимизации.

Ответы [ 3 ]

1 голос
/ 17 мая 2011
update jared_test
set user_count = 1
where userid = 
  (select userID from users where email = 'j@j.co.uk')

попробуйте

0 голосов
/ 17 мая 2011

Я не на 100% уверен, почему другие решения используют подвыбор, который будет выполняться медленнее, чем обычное объединение.Хотя подвыбор taos - это, по сути, регулярное соединение, только что написанное интересно.

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'
0 голосов
/ 17 мая 2011

Вы, похоже, не устанавливаете какую-либо связь между таблицей "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, имело бы больше смысла)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...