有没有更好的方法来执行以下操作?(而不是有两个单独的查询)如果 AdminDetails 表中存在记录,我想将 UserTypeId 列更新为“ USER1
”或“ ”。USER2
UPDATE Usernames
SET UserTypeId = (select Id from UserTypes where code = 'USER1')
WHERE EXISTS
(SELECT AdminDetails.Id
FROM AdminDetails
WHERE AdminDetails.Id = Usernames.Id)
UPDATE Usernames
SET UserTypeId = (select Id from UserTypes where code = 'USER2')
WHERE EXISTS
(SELECT AdminDetails.Id
FROM AdminDetails
WHERE AdminDetails.Id = Usernames.Id)
我尝试使用COUNT()
,但在尝试使用内部联接和 case 语句在一个查询中执行此操作时出现以下错误:
UPDATE Usernames
SET UserTypeId = (CASE WHEN COUNT(AdminDetails.Id) > 0 THEN 'USER1' ELSE 'USER2' END)
FROM AdminDetails
INNER JOIN Usernames AS un
ON AdminDetails.Id = un.UserId
但它给出了以下错误:'聚合可能不会出现在 UPDATE 语句的集合列表中'。
我想在一个查询中使用 case when then else 通过检查记录是否存在来执行此操作。我怎样才能做到这一点?