【发布时间】:2016-08-07 06:54:38
【问题描述】:
我的问题与此极为相似:Select rows which are not present in other table
但不同之处在于我是从一个视图而不是另一个表中检索数据。但是,子选择查询不返回任何记录,我省略了 INSERT INTO 来测试 SELECT 查询
这是我目前得到的:
SELECT SourceT.*, DestT.Column1, DestT.Column2
FROM
ViewA SourceT
LEFT OUTER JOIN
TableA DestT
ON
SourceT.Column1 = DestT.Column1 AND
SourceT.Column2 = DestT.Column2 AND
SourceT.Column3 = DestT.Column3 AND
**** 到这里为止一切正常
WHERE
DestT.Column1 = NULL AND
DestT.Column2 = NULL AND
DestT.Column3 = NULL
如果我忽略 WHERE 条件,它将返回 SourceT 中的所有记录以及 DestT 中未找到的那些记录的 NULL 值 - 这很好用。当我在底部添加 WHERE 子句时(即使只有一个条件),它返回零值。
我可以尝试 DestT.Column1 = NULL,或 DestT.Column1 NULL - 仍然没有返回任何内容。我的查询正确返回 NULL 值,但 WHERE 条件不起作用,或不允许任何数据通过。
知道这里发生了什么吗?本质上,我正在尝试根据许多条件将视图中的行插入到它们尚不存在的 TableA 中。
谢谢
【问题讨论】:
-
有人吗?我还尝试将条件 DestT.Column1 = NULL 添加到 LEFT JOIN 但没有运气:/
-
我让它在没有内部联接的情况下工作并添加以下内容: WHERE NOT EXISTS (SELECT * FROM Table! WHERE ... 条件) 但是该死的查询很慢@ 10,000 条记录仅超过 2 分钟在每个表中?
标签: sql-server select left-join outer-join