Как обновить столбец таблицы в зависимости от условия? - PullRequest
0 голосов
/ 29 октября 2008

Два стола:

StoreInfo:
UserId uniqueidentifier
StoreNo nvarchar
UserName nvarchar
Password nvarchar

UserInfo:
UserId uniqueidentifier
UserName nvarchar
Password nvarchar

ИД пользователя в StoreInfo в настоящее время равен нулю. Как обновить UserId StoreInfo с помощью UserIfo UserInfo, основанного на именах пользователей и паролях StoreInfo, и пароль совпадает с UserName и паролем от 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

Ответы [ 3 ]

3 голосов
/ 29 октября 2008

Обновление будет выглядеть так

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 голосов
/ 29 октября 2008

Наиболее эффективным является синтаксис 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 голосов
/ 29 октября 2008
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, если вы хотите обновить только выбранные строки. (Я не проверял это, так что следите за опечатками!)

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