我想从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';
尝试下面 - 你已经包含一个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