2

ここにこのクエリがあります

SELECT a.FileTrackingTag, a.DataSetName FROM TempTable a
LEFT JOIN FinalTable b ON a.Title = b.Title
WHERE b.FileTrackingTag IS NULL
AND b.DataSetName IS NULL

そして、Finaltable の Filetrackingtag と datasetname を temptable の値で更新したいのは、それらが null で、2 つのテーブル間で同じ Title と SampleID を持っている場合のみです。

テーブル構造はそのままで、両方のテーブルにタイトル、ファイル追跡タグ、およびデータセット名があります

推奨事項はありますか?

4

2 に答える 2

4

あなたが探しているステートメントはこれだと思います:

UPDATE f SET
    Filetrackingtag = isnull(f.Filetrackingtag, t.Filetrackingtag),
    Datasetname  = isnull(f.Datasetname, t.Datasetname)
FROM FinalTable f
JOIN TempTable t 
    ON f.Title = t.Title and f.SampleID = t.SampleID

(私はコードをテストしていませんが、動作するはずだと確信しています)

于 2012-11-20T17:05:19.300 に答える
1

UPDATEステートメントで派生テーブルを使用する

UPDATE x
SET x.FileTrackingTag = x.newFileTrackingTag,
    x.DataSetName = x.newDataSetName
FROM (
      SELECT a.FileTrackingTag AS newFileTrackingTag, a.DataSetName AS newDataSetName,
             b.FileTrackingTag, b.DataSetName
      FROM TempTable a LEFT JOIN FinalTable b ON a.Title = b.Title AND a.SampleID = b.SampleID
      WHERE b.FileTrackingTag IS NULL AND b.DataSetName IS NULL
      ) x 
于 2012-11-25T15:58:29.003 に答える