次のことを行うより良い方法はありますか?(2 つの個別のクエリを使用する代わりに) 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 ステートメントを使用して 1 つのクエリでこれを実行しようとすると、次のエラーが発生しました。
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
しかし、次のエラーが発生します。
レコードが存在するかどうかを確認することにより、case when then else を使用して 1 つのクエリでこれを実行したいと考えています。これどうやってするの?