Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 返回查询值的SQL不存在_Sql Server_Tsql - Fatal编程技术网

Sql server 返回查询值的SQL不存在

Sql server 返回查询值的SQL不存在,sql-server,tsql,Sql Server,Tsql,我在查询检查两个具有不同行的相同表之间的差异时遇到了一些问题。 这就是问题所在 SELECT * FROM [PROD01].[myDefDB].[forward].[fv] as DB01 WHERE TargetDate = '20150429' and NOT EXISTS (SELECT * FROM [PROD02].[myDefDB].[forward].[fv] as DB02 WHERE DB02.TargetDate = '20150429' and

我在查询检查两个具有不同行的相同表之间的差异时遇到了一些问题。 这就是问题所在

SELECT *
FROM [PROD01].[myDefDB].[forward].[fv] as DB01
WHERE TargetDate = '20150429' and
NOT EXISTS (SELECT *
    FROM [PROD02].[myDefDB].[forward].[fv] as DB02
    WHERE DB02.TargetDate = '20150429' and
        DB02.Id_Fw = DB01.Id_Fw and
        DB02.Id_Bl = DB01.Id_Bl and
        DB02.Id_Pt = DB01.Id_Pt and
        DB02.TargetDate = DB01.TargetDate and
        DB02.StartDate = DB01.EndDate and
        DB02.EndDate = DB01.EndDate and
        DB02.[Version] = DB01.[Version]
)
假设
[PROD02].[myDefDB].[forward].[fv]
[PROD01].[myDefDB].[forward].[fv].[code>的一个子集,对
TargetDate='20150429'
的两个表执行
选择计数(*)
会返回2367和4103,因此我希望从该查询中得到1736,但我得到的数据超过2000


我考虑了
WHERE
子句中的所有PK。我缺少什么?

你可以使用
,除了这样的

SELECT Id_Fw,Id_Bland,Id_Pt,TargetDate,StartDate,EndDate,[Version]
FROM [PROD01].[myDefDB].[forward].[fv] as DB01
WHERE TargetDate = '20150429'
EXCEPT
SELECT Id_Fw,Id_Bl,Id_Pt,TargetDate,StartDate,EndDate,[Version]
FROM [PROD02].[myDefDB].[forward].[fv] as DB02
WHERE TargetDate = '20150429'

这将获得
PROD01
中不在
PROD02
中的所有行,您可以使用
,除了这样的

SELECT Id_Fw,Id_Bland,Id_Pt,TargetDate,StartDate,EndDate,[Version]
FROM [PROD01].[myDefDB].[forward].[fv] as DB01
WHERE TargetDate = '20150429'
EXCEPT
SELECT Id_Fw,Id_Bl,Id_Pt,TargetDate,StartDate,EndDate,[Version]
FROM [PROD02].[myDefDB].[forward].[fv] as DB02
WHERE TargetDate = '20150429'

这将获得
PROD01
中不在
PROD02
中的所有行,您可以使用
,除了这样的

SELECT Id_Fw,Id_Bland,Id_Pt,TargetDate,StartDate,EndDate,[Version]
FROM [PROD01].[myDefDB].[forward].[fv] as DB01
WHERE TargetDate = '20150429'
EXCEPT
SELECT Id_Fw,Id_Bl,Id_Pt,TargetDate,StartDate,EndDate,[Version]
FROM [PROD02].[myDefDB].[forward].[fv] as DB02
WHERE TargetDate = '20150429'

这将获得
PROD01
中不在
PROD02
中的所有行,您可以使用
,除了这样的

SELECT Id_Fw,Id_Bland,Id_Pt,TargetDate,StartDate,EndDate,[Version]
FROM [PROD01].[myDefDB].[forward].[fv] as DB01
WHERE TargetDate = '20150429'
EXCEPT
SELECT Id_Fw,Id_Bl,Id_Pt,TargetDate,StartDate,EndDate,[Version]
FROM [PROD02].[myDefDB].[forward].[fv] as DB02
WHERE TargetDate = '20150429'


这将获取
PROD01
中不在
PROD02

中的所有行。您的列中是否有空值?您的列中是否有空值?您的列中是否有空值?您的列中是否有空值?您可能需要更正第一部分中的列名Id_Blandyeah谢谢,这看起来也是OP的一个输入错误,因为两个表在不同的时刻看起来是同一个表。这段代码很有效,谢谢!但是我上面发布的代码有什么问题?我还有一些表,其中非索引列中的数值略有不同,因此我不能使用
,除非使用
,好吧,刚刚找到原因
DB02.StartDate=DB01.EndDate
而不是
DB02.StartDate=DB01.StartDate
您可能需要更正第一部分Id中的列名。\u bland是的,谢谢,这看起来也是OP的输入错误,因为两个表在不同的实例中看起来是同一个表。谢谢!但是我上面发布的代码有什么问题?我还有一些表,其中非索引列中的数值略有不同,因此我不能使用
,除非使用
,好吧,刚刚找到原因
DB02.StartDate=DB01.EndDate
而不是
DB02.StartDate=DB01.StartDate
您可能需要更正第一部分Id中的列名。\u bland是的,谢谢,这看起来也是OP的输入错误,因为两个表在不同的实例中看起来是同一个表。谢谢!但是我上面发布的代码有什么问题?我还有一些表,其中非索引列中的数值略有不同,因此我不能使用
,除非使用
,好吧,刚刚找到原因
DB02.StartDate=DB01.EndDate
而不是
DB02.StartDate=DB01.StartDate
您可能需要更正第一部分Id中的列名。\u bland是的,谢谢,这看起来也是OP的输入错误,因为两个表在不同的实例中看起来是同一个表。谢谢!但是我上面发布的代码有什么问题?我还有一些表,其中非索引列中的数值略有不同,因此我不能使用
,除非使用
,好吧,刚刚找到原因
DB02.StartDate=DB01.EndDate
而不是
DB02.StartDate=DB01.StartDate