【发布时间】:2010-09-22 15:59:03
【问题描述】:
我有以下表格:
参赛作品
EntryID - int
EntryDate - 日期时间
小时
EntryID - int
InHour - 日期时间
OutHour - 日期时间
对于 Entry 表中的每个注册表,Hour 表中应该至少有一个(可能很多)注册表,如下所示:
参赛作品
条目ID:8
报名时间:9/9/2010 12:31:25
小时
条目ID:8
营业时间:2010 年 9 月 9 日 12:31:25
营业时间:2010 年 9 月 9 日 18:21:19
现在,此信息存储在 2 个相同的数据库中,一个在本地计算机上,一个在服务器上。我正在尝试编写一个查询,该查询将在不删除没有 OutHour (null) 的注册表的条件下删除所有已传递给服务器的信息。
我写了以下查询:
DELETE from [dbo].[Entry]
WHERE [dbo].[Entry].[EntryID] IN (SELECT [EntryID]
FROM [LINKEDSERVER].[MYDATABASE].[dbo].[Entry])
AND [dbo].[Entry].[EntryID] IN (SELECT [EntryID]
FROM [dbo].[Hour]
WHERE [OutHour] IS NOT NULL)
DELETE from [dbo].[Hour]
WHERE [dbo].[Hour].[InHour] IN (SELECT [InHour]
FROM [LINKEDSERVER].[MYDATABASE].[dbo].[Hour])
AND [dbo].[Hour].[OutHour] IS NOT NULL
AFAIK,此查询首先检查 Entry 表,并将删除服务器上已经存在且没有相应 Hour 注册表且 OutHour 为空的任何注册表。但是今天我发现一条 Entry 记录被删除了,但相应的 Hour 没有(它的 OutHour 为空)。
我做错了什么?任何帮助表示赞赏。
谢谢!
【问题讨论】:
标签: sql sql-server sql-server-2005 tsql