簡體   English   中英

如何將新值從 SQL 服務器中的不同表添加到表中?

[英]How to add New values into a table from a different table in SQL Server?

我最近從 Access 后端遷移到 SQL 服務器。 我的前端在 MS Access 中,后端在 SQL 服務器中。 現在,每當用戶創建新客戶端時,存儲過程會自動運行,該存儲過程實際上將主表中的數據拆分為不同的表,例如:客戶端表將包含所有數據,然后將其拆分為不同的表,如地址,電話等。現在,每次存儲過程運行時,客戶端表中的所有值都會插入到其他表中,因為所有值都是重復的。 我只想將新值插入到不同的表中,而不是已經存在的舊值。

[存儲過程]

INSERT INTO [dbo].[ClientRelationstbl]
           ([CNR](FK)
           ,[RelationTypeID]
           ,[FirstName]
           ,[Surname]
           ,[LastUpdated]
           ,[UpdatedBy]
           ,[Active])
     Select
            [CNR](PK)
           ,1
           ,[FNM]
           ,[SNM]
           ,GETDATE()
           ,124
           ,1
    FROM [dbo].[clientstbl]
    Where [FNM] is not null or [SNM] is not null AND [CNR] NOT IN (SELECT DISTINCT [CNR] FROM [ClientRelationstbl])

[FNM] = 名字母親 [SNM] = 姓母親

現在,每當我嘗試運行它時,它都會在表中存儲重復的值。 我只想將新值存儲在 ClientRelation 表中。

請使用“NOT EXISTS”而不是“NOT IN”:

INSERT INTO [dbo].[clientrelationstbl]
            ([Cnr](fk),
             [relationtypeid],
             [firstname],
             [surname],
             [lastupdated],
             [updatedby],
             [active])
SELECT a.[Cnr](pk),
       1,
       a.[fnm],
       a.[snm],
       Getdate(),
       124,
       1
FROM   [dbo].[clientstbl] a
WHERE  (a.[fnm] IS NOT NULL OR a.[snm] IS NOT NULL)
       AND NOT EXISTS (SELECT b.[cnr]
                             FROM [clientrelationstbl] b 
                             WHERE b.[Cnr] = a.[Cnr]) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM