0
我在同一个表上运行这两个查询。此查询SQL连接不等于返回一些相等的列
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条记录。
为什么<>
可以在某些记录上工作,但不能在其他记录上工作?这两列都是浮动的。有任何想法吗?
我的猜测是这些值实际上并不相等,但是你[在输出中看到四舍五入的值](http://stackoverflow.com/questions/8099575/full-precision-output-of-浮点类型在SQL服务器管理工作室),所以他们*看起来*平等。比较花车总是会有点棘手;您可能想要使用“epsilon”比较而不是直接平等。 –
这些都是int列吗?如果不是可能会有额外的空白区域,请尝试使用LTRIM和RTRIM以及Join条件中的所有列。 –
是否t1.TestValue和t2.ReportValue是相同的数据类型? – Kennah