簡體   English   中英

遍歷臨時表並插入另一個表

[英]Iterate through temp table and insert into another table

我有一個查詢,返回IDORG IDNAME

碼:

CREATE TABLE #TMP (ORG_ID INT)

INSERT INTO #TMP SELECT ORG_ID FROM [dbo].[fx_Rights_OrgIDs] (331)

SELECT [BRN_ID],[BRN_ORGID],[BRN_Name]
FROM [dbo].[BranchDetails]
WHERE [BRN_ORGID] IN (SELECT ORG_ID FROM #TMP)

DROP TABLE #TMP

返回值:

BRA_ID    BRA_ORGID     BRA_Name

289      333            Office

290      334            Store

我想要做的是通過迭代和#TMP插入到另一個表: SitePrefix如果存在價值SitePrefix不插入。

因此,例如插入BRA_Nametemp tableSitePrefix ,如果它存在,然后跳過。

SitePrefix列如下所示:( SPF_IDSPF_NameSPF_Prefix

SPF_ID是自動生成的, SPF_Name應該來自BRA_Name,並且SPF_PrefixEMS

嘗試下面的查詢,該查詢使用EXCEPT這是SQL Server中的SET Difference運算符)

INSERT INTO SitePrefix  
   SELECT [BRN_Name], 'EMS'
   FROM [dbo].[BranchDetails]
   WHERE [BRN_ORGID] IN (SELECT ORG_ID FROM #TMP)
   EXCEPT
   SELECT SPF_Name, 'EMS'
   FROM SitePrefix  

試試這個,有什么問題然后告訴,

MERGE siteprefix AS T 
using (SELECT [brn_id], 
              [brn_orgid], 
              [brn_name] 
       FROM   [dbo].[branchdetails] 
       WHERE  [brn_orgid] IN (SELECT org_id 
                              FROM   [dbo].[Fx_rights_orgids] (331))) AS s 
ON t.spf_name = brn_name 
WHEN NOT matched THEN 
  INSERT (spf_name, 
          spf_prefix) 
  VALUES (brn_name, 
          brn_orgid) 

暫無
暫無

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

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