2016-01-15 32 views
0

我試圖在名爲#LIST的表中更新名爲Specialty的列。我需要從3個不同的表格中提取信息,因爲1個表格中的專業是NULL。我更喜歡使用#Segment表中的專業,如果這是NULL,那麼我想使用#SUBMARKET表中的專業,如果這是NULL,我想使用#MARKET表中的專業。是否有更新使用多個表的列的方法

當我運行下面的查詢時,它不會更新任何行。我不想使用多個Update語句。我能做什麼?

UPDATE #LIST 
SET Specialty = CASE WHEN (l.Segment__c is not NULL) THEN s.Specialty 
        WHEN (l.Segment__c is NULL)  THEN b.Specialty 
        WHEN (l.Submarket__c is NULL) THEN m.Specialty 
        ELSE s.Specialty 
       END 
FROM #LIST l 
    join #MARKET m on m.Market = l.Market__c 
    join #SUBMARKET b on b.Submarket = l.Submarket__c 
    join #Segment s on s.Segment = l.Segment__c 
+0

您的語法建議SQL Server,所以我刪除了MySQL標記。 –

回答

1

您需要使用UPDATE中的表別名。另外,我認爲你需要left join

UPDATE l 
SET Specialty = CASE WHEN (l.Segment__c is not NULL) THEN s.Specialty 
        WHEN (l.Segment__c is NULL)  THEN b.Specialty 
        WHEN (l.Submarket__c is NULL) THEN m.Specialty 
        ELSE s.Specialty 
       END 
FROM #LIST l 
    left join #MARKET m on m.Market = l.Market__c 
    left join #SUBMARKET b on b.Submarket = l.Submarket__c 
    left #Segment s on s.Segment = l.Segment__c; 

否則,NULL值會過濾掉行,因爲他們沒有在連接匹配。

+0

謝謝!這工作完美! – KDorn

相關問題