1

我有一张如下表所示的表格:

在此处输入图像描述

每次用户借出一本书时,都会插入一条新记录。

此表中的数据源自或取自另一个没有日期的表。

我需要根据另一个表中的记录来更新这个表:这意味着我只需要根据变化来更新这个表。

示例:假设用户归还书Starship Troopers并且书归还指示为Yes。如何仅更新该列?

我试过的:

我尝试使用 MERGE 语句,但它仅适用于唯一的数据行,这意味着如果同一个 ID 出现多次,则会出现错误。

我也尝试过使用基本的 UPDATE 语句和 JOIN,但这并不顺利。

我问是因为我已经没有想法了。

谢谢阅读

4

2 回答 2

1

您可以通过简单的更新和插入语句来做到这一点.....两个表 A 和 B 从 B 如果不存在,您想将数据插入 A 否则更新该数据....,首先插入临时表... .

SELECT * 
INTO   #MYTEMP 
FROM   B 
WHERE  BOOKSLOANED NOT IN (SELECT BOOKSLOANED 
                           FROM   A) 

,第二次检查数据并插入A。

INSERT INTO A 
SELECT * 
FROM   #MYTEMP 

最后编写一个简单的更新语句来更新 A 的所有数据。如果有任何变化,那么它也反映到该数据,否则数据原样。

您还可以从 #MYTEMP 表进行更新。

于 2013-08-05T06:05:52.443 回答
1

如果您需要BooksReturn根据源表中的同一列在目标表中更新

UPDATE t
   SET t.booksreturn = s.booksreturn
  FROM target t JOIN source s
    ON t.userid = s.userid 
   AND t.booksloaned = s.booksloaned

这是SQLFiddle演示

于 2013-08-05T06:10:02.277 回答