如何构造左连接和排除匹配ID。 WHERE是NULL子句不起作用

问题描述 投票:-1回答:1

我想从leftTable中选择在rightTable中没有匹配但是在WHERE处获得错误'错误语法'的行。它似乎是一个简单的连接,但我无法使用“WHERE r.id IS NULL”。

我是否正确理解LEFT JOIN / WHERE rightTable.id IS NULL应该生成一个leftTable项目列表,这些项目在rightTable中没有匹配项?

  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';
sql left-join where isnull
1个回答
0
投票

尝试下面 - 你已经包含一个where子句,而你使用了两个,并且在r.id IS NULL子句中除了ON之外还移动了你的其他条件

SELECT l.*
  INTO #temp_length
  FROM leftTable l
  LEFT JOIN rightTable r
        ON l.id = r.id AND l.start <= r.start
        AND l.end > r.start and 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'
        WHERE r.id IS NULL
© www.soinside.com 2019 - 2024. All rights reserved.