1

以下の表のような表があります。

ここに画像の説明を入力

ユーザーが本を貸与するたびに、新しいレコードが挿入されます。

このテーブルのデータは、日付のない別のテーブルから派生または取得されています。

他のテーブルのレコードに基づいてこのテーブルを更新する必要があります。つまり、変更内容に基づいてこのテーブルを更新するだけで済みます。

例: ユーザーが本Starship Troopersを返品し、本の返品がYesに示されているとします。その列だけを更新するにはどうすればよいですか?

私が試したこと:

MERGE ステートメントを使用してみましたが、データの一意の行でのみ機能します。つまり、同じ ID が複数回出現するとエラーが発生します。

また、基本的な UPDATE ステートメントと JOIN を使用してみましたが、うまくいきません。

アイデアが尽きたので質問します。

読んでくれてありがとう

4

2 に答える 2

1

これは、単純な Update & Insert ステートメントで行うことができます..... 2 つのテーブル A & B B から、データが存在しない場合は A に挿入します。そうでない場合は、そのデータを更新します....、最初に一時テーブルに挿入します... .

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

,2 番目のデータを確認し、A に挿入します。

INSERT INTO A 
SELECT * 
FROM   #MYTEMP 

そして最後に、A のすべてのデータを更新する単純な update ステートメントを 1 つ記述します。変更があれば、そのデータにも反映されます。それ以外の場合は、そのままのデータです。

#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 に答える