我在同一个表上运行这两个查询。此查询
SELECT *
FROM @Table1 t1
JOIN @Table2 t2 ON t1.PersonID = t2.PersonID
返回300条记录(两个表都有300条记录),不排除值不匹配的记录。
此查询:
SELECT *
FROM @Table1 t1
JOIN @Table2 t2 ON t1.PersonID = t2.PersonID AND t1.TestValue <> t2.ReportValue
返回90条记录:
第二个查询排除了许多具有相同值但不是全部的记录,它应该只返回20条记录。
为什么<>
会对某些记录起作用而其他记录却不起作用?两列都是浮点数。有什么想法吗?
答案 0 :(得分:0)
可能的是,至少有一个PersomID或ReportValue / TestValue列可以是VARCHAR()数据类型,而不是INTEGER数据类型。如果它是varchar数据类型,那么这些值中的某些值可能包含一个您现在无法看到的空格。
因此,如果您的ReportValue = 8991 AND TestValue ='8991',它们将导致条件返回FALSE。
答案 1 :(得分:0)
只需删除InnerJoin并执行Left Join