2008-10-29 6 views
0

Два стол:Как обновить столбец таблицы на основе условия?

StoreInfo: 
UserId uniqueidentifier 
StoreNo nvarchar 
UserName nvarchar 
Password nvarchar 

UserInfo: 
UserId uniqueidentifier 
UserName nvarchar 
Password nvarchar 

идент на StoreInfo в настоящее время нулевой. Как я могу обновить UserId StoreInfo с UserId UserInfo на основе UserName StoreInfo, а пароль соответствует UserName и Password из UserInfo.

следующий запрос, который я написал, который обновляет весь UserId в StoreInfo с помощью первого UserId из UserInfo, поэтому я знаю, что это неправильно.

declare @UserName nvarchar(255) 
declare @Password nvarchar(25) 
declare @UserId uniqueidentifier 

select @UserName = UserName, @Password = Password, @UserId = UserId 
from UserInfo 

select UserId, Password 
    from FranchiseInfo 
    where UserID = @UserName and Password = @Password 

update FranchiseInfo 
set UserI = @UserId 
+0

Преждевременная оптимизация - это корень всего зла в программировании. – 2009-10-27 09:39:35

ответ

0
UPDATE StoreInfo 
set UserId = ui.UserId 
from StoreInfo si 
    inner join UserInfo ui 
    on ui.UserName = si.UserName 
    and ui.Password = si.Password 
where si.UserId is null 

Это обновит все строки в таблице, где UserId не установлен. Создайте предложение where, если вы хотите обновить выбранные строки. (Я не проверял это, так что слежу за опечатки!)

3

обновление будет выглядеть следующим образом

update storeinfo 
set userid = u.userid 
from userinfo u 
inner join storeinfo s on (s.username = u.username and s.password = u.password) 
where userid is null 
0

Наиболее эффективным способом является UPDATE ... FROM синтаксисом, например,

UPDATE StoreInfo 
SET 
    UserId = ui.UserId 
FROM 
    StoreInfo si 
    INNER JOIN UserInfo ui ON ui.UserName = si.UserName AND ui.Password = si.Password; 
+0

Thank. Ваше решение намного понятнее. – Jack 2008-10-29 20:50:20

Смежные вопросы