【发布时间】:2019-03-27 02:30:31
【问题描述】:
我想从 leftTable 中选择在 rightTable 中没有匹配但得到错误“WHERE 语法不正确”的行。这似乎是一个简单的连接,但我无法让它与“WHERE r.id IS NULL”一起使用。
我是否正确理解 LEFT JOIN / WHERE rightTable.id IS NULL 应该生成一个在 rightTable 中没有匹配项的 leftTable 项目列表?
SELECT l.*
INTO #temp_length
FROM leftTable l
LEFT JOIN rightTable r
ON l.id = r.id
WHERE r.id IS NULL
AND l.start <= r.start
AND l.end > r.start
WHERE l.type IN ('A', 'B', 'C')
AND l.id IN (SELECT id FROM lookupTable WHERE d_type = 'Z')
AND l.disabled = 'N'
AND r.latest = 'Y';
【问题讨论】:
-
这是一个常见问题解答。在考虑发布之前,请始终在谷歌上搜索您的错误消息或您的问题/问题/目标的许多清晰、简洁和准确的措辞,有或没有您的特定字符串/名称,并阅读许多答案。如果您发布问题,请使用一个短语作为标题。 How to Ask
-
了解左连接返回的内容:行上的内连接以及由空值扩展的不匹配左表行。作为左连接的一部分,始终知道您想要什么内连接。在左连接删除任何由空值扩展的行之后,内连接或需要右表列不为空的地方,即仅在行上留下内连接,即“将外连接变为内连接”。你有那个。
-
该代码甚至无法解析。每个选择只能有一个 where 。 (不管那个特定的问题:)请在代码问题中给出minimal reproducible example--cut & paste & runnable code 加上所需的输出加上清晰的规范和解释。最小意味着将最少的问题代码添加到最少的工作代码中。因此,给出你所展示的最少代码,并在你出错的第一个地方提供最少的代码。 (调试基础。) PS 包括 DBMS 标记。
标签: sql left-join where isnull