![](/img/trans.png)
[英]SQL Server - How to SELECT values from different rows but in the same table
[英]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.