【发布时间】:2010-08-02 00:03:54
【问题描述】:
我正在尝试使用 SQL 插入语句将行从一个数据库中的表迁移到另一个数据库中的表。该语句一直有效,直到我在目标表上添加一个唯一索引,此时我正在努力让插入语句能够排除重复项。这是我应该做的:
INSERT INTO [MyDB].[dbo].[HPB] (
[HPID],
[BusinessID]
)
SELECT
PersonId = (SELECT ID FROM [MyDB].[dbo].[HP] WHERE PersonID = lPersonId),
lBusinessId
FROM [MyOriginalDB].[dbo].[tblEmployment]
WHERE
lPersonId in (SELECT PersonID FROM [MyDB].[dbo].[HP])
AND
lBusinessId in (SELECT ID FROM [MyDB].[dbo].[Business])
AND
NOT EXISTS (SELECT * FROM [MyDB].[dbo].[HPB] WHERE
[HPID] = (SELECT ID FROM [MyDB].[dbo].[HP] WHERE PersonID = lPersonId)
AND [BusinessID] = lBusinessId)
HPB 表的架构是:
CREATE TABLE [dbo].[HPB](
[ID] [int] IDENTITY(1,1) NOT NULL,
[HPID] [int] NOT NULL,
[BusinessID] [int] NOT NULL,
CONSTRAINT [PK_HealthProfessionalBusiness] PRIMARY KEY CLUSTERED)
唯一索引位于 [MyDB].[dbo].[HPB] 表中的列(HPID、BusinessID)
当我运行插入时,我收到关于重复行插入的错误,我无法弄清楚为什么下面的 SQL 不排除重复项。
NOT EXISTS (SELECT * FROM [MyDB].[dbo].[HPB] WHERE
[HPID] = (SELECT ID FROM [MyDB].[dbo].[HP] WHERE PersonID = lPersonId)
AND [BusinessID] = lBusinessId)
【问题讨论】:
标签: sql sql-server tsql