2016-07-15 105 views
0

好的,所以我已經看到了一些這方面的帖子,但由於某種原因,我的代碼不會更新表A的TrnID字段與表B的LastTrnID信息,任何幫助將大大讚賞。如果我的內部連接只是基於一個字段,那麼更新就可以工作,但是我知道可以這樣做,以便在兩個字段中進行內部連接,但我只能假設我沒有正確執行此操作。基本上,表A和表B是在查詢開始時即時創建的,然後我必須將兩個表集合在一個表中。決賽桌應該包括這個人,然後爲每個人提供每天的第一個和最後一個交易,這就是爲什麼我正在對CrdID和LastTrnDate進行內部連接,這是該領域的一天部分。更新表sql基於兩個標準

UPDATE 
    Table_A 
SET 
    Table_A.TrnID = Table_B.LastTrnID  
FROM Table_A 
INNER JOIN Table_B 
     ON (Table_A.CrdID = Table_B.CardholderID) 
     AND (Table_A.TrnD = Table_B.LastTrnDate) 
+1

我們需要DB模式,樣本數據和預期的輸出。你是直接在數據庫上執行還是在你的應用程序中執行?請閱讀[** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t這裏是[** START **](http ://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/),瞭解如何提高您的問題質量並獲得更好的答案。 –

+0

更可能由於事務的整個時間部分,Table_A.TrnD和Table_B.LastTrnDate永遠不會相等。改爲使用:CONVERT(varchar,Table_A.TrnD,101)= CONVERT(VARCHAR,Table_B.LastTrnDate,101) –

回答

1

你的查詢看起來OK

所以可能是數據錯誤(額外#上#Table_A旁)。首先檢查您的查詢是否帶來結果

嘗試使用此SELECT以查看您要更新的字段和新值是否正確。

SELECT Table_A.TrnID, Table_B.LastTrnID  
FROM Table_A 
INNER JOIN Table_B 
     ON Table_A.CrdID = Table_B.CardholderID 
     AND Table_A.TrnD = Table_B.LastTrnDate 
+0

我很抱歉,額外的#僅僅是網站上的一個錯字。幾乎我所要做的就是根據兩個標準更新表A上的一個字段。截至目前,如果我的內部聯接中只有一個標準,表A中的字段只會更新。如果我添加第二個條件,則更新不再起作用。 – Mnk

+0

您是否嘗試過選擇?給你任何結果? –

0
UPDATE f1 
    SET f1.TrnID = f2.LastTrnID  
    FROM Table_A f1 INNER JOIN Table_B f2 
    ON (f1.CrdID = f2.CardholderID) AND (f1.TrnD = f2.LastTrnDate)