我有一個Access .mdb數據庫。有兩個結構相同的表格:價格和tmpPrices。每個表格有三列:[截至日期標準](日期/時間),價格(雙倍),CUSIP(文本,255個字符)。 tmpPrices包含要添加到價格的新記錄。我有兩個SQL查詢來從tmpPrices更新價格,一個使用WHERE連接,另一個使用INNER JOIN。使用INNER JOIN與NOT EXISTS訪問INSERT語句給出錯誤結果
下面的A版本可以正常工作:
INSERT INTO [Prices] SELECT * FROM [tmpPrices] WHERE NOT EXISTS
(SELECT * from [Prices]
WHERE ([Prices].[As of date std] = [tmpPrices].[As of date std])
AND ([Prices].CUSIP = [tmpPrices].CUSIP));
,而這個版本B不工作:
INSERT INTO [Prices] SELECT * FROM [tmpPrices] WHERE NOT EXISTS
(SELECT [Prices].* FROM [Prices] INNER JOIN [tmpPrices] ON
([Prices].[As of Date std] = [tmpPrices].[As of Date std])
AND ([Prices].CUSIP = [tmpPrices].CUSIP));
兩個子查詢產生相同的結果:記錄:從tmpPrices一個子集,已經存在於價格中。
使用版本A無關緊要如果不是我必須更新其他表,而另一個表則需要大約45分鐘才能使用版本A進行更新,但只能使用版本B的一小部分,並且似乎可行正確。所以我想了解這裏發生了什麼。
即使在有150萬行的桌子上,您的解決方案也很簡潔,執行速度非常快。 – GreatKing