2016-07-15 106 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)