我有一个返回ID
,ORG ID
和NAME
的查询。
代码:
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_Name
中的temp table
插入SitePrefix
,如果存在,则跳过。
SitePrefix
列如下所示:(SPF_ID
,SPF_Name
,SPF_Prefix
)
SPF_ID
是自动生成的,SPF_Name
应来自BRA_Name,SPF_Prefix
为EMS
答案 0 :(得分:0)
尝试使用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
答案 1 :(得分:0)
试试这个,然后告诉任何问题,
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)