1

只是想知道是否有人可以帮助我完成一个非常简单的 SQL 查询。

我需要将数据从 table1 传输到 table2where table1.jobID = table2.jobID

我应该使用 join 吗?

我只想用来自 table1 的数据填充一个 NULL 列,使用 jobID 来匹配。

提前致谢

交流电

4

2 回答 2

0

由于知识有限,听起来您只需要一个简单的更新:

UPDATE PreviousJobsTEST
SET dValuationDate = Jobs.dValuationDate
FROM PreviousJobsTEST
    JOIN Jobs
        ON PreviousJobsTEST.iJobID= Jobs.iJobID

如果您只想在它为空时更新它,那么您可以这样做:

UPDATE PreviousJobsTEST
SET dValuationDate = CASE WHEN PreviousJobsTEST.dValuationDate IS NULL THEN Jobs.dValuationDate ELSE PreviousJobsTEST.dValuationDate END
FROM PreviousJobsTEST
    JOIN Jobs
        ON PreviousJobsTEST.iJobID= Jobs.iJobID

或者,根据您的评论,您可以执行您列出的操作,您只需将其转换为插入后面的 SELECT :

INSERT INTO [DocPrep].[dbo].[PreviousJobsTEST] (dValuationDate) 
SELECT [DocPrep].[dbo].[Jobs].[dValuationDate]
FROM [DocPrep].[dbo].[PreviousJobsTEST]
    JOIN [DocPrep].[dbo].[Jobs] 
        ON [DocPrep].[dbo].[Jobs].[iJobID] = [DocPrep].[dbo].[PreviousJobsTEST].[iJobID]
于 2012-04-05T01:50:28.567 回答
0

当 t1.column 为 null 时,您需要更新。当 t1.column 不为空时,您应该将其设置为自身。

SELECT *
INTO   #table1
FROM   (SELECT '1'  AS jobid,
               NULL AS column1
        UNION ALL
        SELECT '2',
               NULL
        UNION ALL
        SELECT '3',
               NULL
        UNION ALL
        SELECT '4',
               'A'
        UNION ALL
        SELECT '5',
               NULL) a

SELECT *
INTO   #table2
FROM   (SELECT '1' AS jobid,
               '1' AS column1
        UNION ALL
        SELECT '2',
               '2'
        UNION ALL
        SELECT '3',
               '3'
        UNION ALL
        SELECT '4',
               '4'
        UNION ALL
        SELECT '5',
               '5')b

UPDATE t1
SET    t1.column1 = ( CASE
                        WHEN t1.column1 IS NULL THEN t2.column1
                        ELSE t1.column1
                      END )
FROM   #table1 t1
       LEFT JOIN #table2 t2
         ON t1.jobid = t2.jobid

SELECT *
FROM   #table1  
于 2012-04-05T02:06:17.657 回答