2012-04-05 43 views
1

想知道是否有人可以用一個非常簡單的SQL查詢來幫助我。在SQL Server中使用where table1.jobid = table移動數據2.jobid

我需要將數據從表1轉移到表2​​

我應該使用加入?

我只想用來自table1的數據填充NULL列,使用jobID進行匹配。

由於提前

AC

+0

我試過,但我失敗了:。。。(dValuationDate) FROM [DocPrep] INSERT INTO [DocPrep] [DBO] [PreviousJobsTEST] [DBO] [招聘] WHERE [DocPrep] 。[dbo]。[Jobs](iJobID)= [DocPrep]。[dbo]。[PreviousJobsTEST](iJobID) – Mikey3Strings 2012-04-05 01:49:30

+0

歡迎來到Stack Overflow!我總是喜歡歡迎新成員,並讓他們知道讚賞通過upvotes和接受的答案顯示(檢查旁邊的答案)。請查看[faq]獲取更多信息,特別是[ask] – 2012-04-05 01:57:41

回答

0

有了它聽起來像所有你需要的有限的知識是一個簡單的UPDATE:

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

如果你只是想更新它,如果它爲null,則你可以這樣做:

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] 
+0

Im get: Msg 209,Level 16,State 1,Line 2 歧義列名'dValuationDate'。 – Mikey3Strings 2012-04-05 01:58:44

+0

@AtomicCockroach我已經更新了我的回答 – 2012-04-05 01:59:37

+0

我試着第一個更新子句 – Mikey3Strings 2012-04-05 02:01:24

0

當t1.column爲空時,您需要更新。當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