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

我想用 temptable 中的值更新 Filetrackingtag 和 finaltable 中的数据集名称,前提是它们为 null 并且在两个表之间具有相同的 Title 和 SampleID

表结构是这样的,两个表都有 Title、Filetrackingtag 和 Datasetname

有什么建议吗?

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 回答