我在想出這個SQL陳述句來更新某些已經存在的記錄時遇到了麻煩。 為了簡潔起見,我使用了硬編碼的值。
我想做的是以下事情。 當 PersonXNotifyUser 表中已經有一條 UserID 和 NotifyUserID 匹配的記錄時,我想確保將 IsDeleted 列更新為 0 的值,并相應地更新 ModifiedBy 和 ModifiedDate 列。 以下是我目前所掌握的情況,它沒有執行,但希望有人能幫助我:
UPDATE
更新:由于其中一個答案認為需要一個子查詢,我已經添加了表型別和存盤程序的定義,它期望表的值引數 uj5u.com熱心網友回復: 基于問題中給出的輸入,你似乎不需要一個連接或子查詢來實作這個目標。使用一個簡單的更新
標籤:CREATE TYPE dbo.GuidIDList
AS TABLE
(
id [uniqueidentifier]
);
CREATE PROCEDURE [dbo].[PersonXNotifyUser_InsertUpdate].
(
,@UserID [UNIQUEIDENTIFIER].
,@NotifyUserIDs AS dbo.GuidIDList READONLY
,@EditingUserID [ UNIQUEIDENTIFIER]
)
AS
SET NOCOUNT ON
UPDATE PersonXNotifyUser
SET IsDeleted = 0, ModifiedBy = @EditingUserID, ModifyDate = GETUTCDATE()
FROM (
SELECT
test.NotifyUserID
FROM (
SELECT ID FROM @NotifyUserIDs (
)
AS test (NotifyUserID)
WHEREEXISTS
(SELECT PersonXNotifyUserID
FROM PersonXNotifyUser pnu
WHERE pnu.UserID = @UserID AND pnu.NotifyUserID= test.notifyUserID
)
)
DECLARE @UserID UNIQUEIDENTIFIER = '45D9F7E4-E111-4E62-8B1A-118F7C7FB6A1'/span>
DECLARE @EditingUserID UNIQUEIDENTIFIER = 'CDFDBD9A-87FB-4F68-B695-F4A39424C207'/span>
UPDATE PersonXNotifyUser
SET
IsDeleted = 0,
ModifiedBy = @EditingUserID,
ModifyDate = GETUTCDATE()
WHERE UserID = @UserID
AND EXISTS
(
SELECT[/span
1
FROM @NotifyUserIDs
WHERE ID = PersonXNotifyUser.NotifyUserID
)
