爲什麼這兩個SQL結構不會產生相同的結果,我有點難以理解。sql join -vs- where子句不會產生相同的結果?
SQL#1回2條相同的記錄(DUP的)當只有一個缺陷表中存在...看下SQL
SELECT *
FROM Defects d
JOIN StatusCode C ON C.CodeName = d.Status AND c.scid = 10
WHERE d.AssignedTo='me'
SQL#2重播1個紀錄 - 這是在原始數據的正確原因lookign有一個缺陷不是封閉的「我」
SELECT *
FROM Defects d
WHERE d.AssignedTo='me' AND Status <> 'closed'
所有我做的是不是使用負,其中狀態沒有的東西,用積極的方式加入到具有其他每個值的缺陷狀態記錄比已關閉
爲什麼會發生這種情況,以及如何通過連接來改變我的選擇,以便對其結果進行驗證。我試圖使用DISTINCT
但它失敗:
ntext數據類型不能被選擇作爲 DISTINCT,因爲它不是 可比性。
沒有狀態碼被「封閉」,沒有一個:
select * from StatusCode where scid = 10
導致這些值: 固定 新 準備複試 失敗複試 質量跟進 重新打開 拒絕 消費者 編碼 打開 固定 新 準備複試 失敗複試 質量跟進 重新打開 拒絕 消費者 編碼 打開
我看到你的數據庫中有ntext字段。您需要開始使用nvarchar(max)替換這些,因爲ntext已被棄用,並且不會在2008年後的SQL Server的下一個版本中。使用IN的 – HLGEM 2010-12-09 16:09:29