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