2016-04-26 82 views
0

我正在使用DB2,並且是SQL中的初學者。我這裏有兩個表:DB2的UPDATE JOIN語句

表1:

ID | PageID 
------------ 
1 | 101 
2 | 102 
3 | 103 
4 | 104 

表2:

ID | SRCID | PageID 
-------------------- 
1 | 2 | 179 
2 | 3 | 103 
3 | 3 | 109 

表2和表1有不同數量的記錄。 Table2.SCRID對應於Table1.ID。 我想根據SRCID更新Table2中的PageID以遵循Table1的PageID中陳述的內容。 表2的我的最終結果應該是:

ID | SRCID | PageID 
-------------------- 
1 | 2 | 102 
2 | 3 | 103 
3 | 3 | 103 

如何爲DB2這樣做在SQL?

我想:

UPDATE table2 
    SET PageID = (SELECT t1.PageID from table1 as t1 join table2 as t2 
     WHERE t2.SCRID = t1.ID); 

但正如我得到上面不起作用:

DB21034E該命令被處理爲一個SQL語句,因爲它不是一個 有效的命令行處理器命令。在SQL處理過程中,它返回: SQL0811N標量全選,SELECT INTO語句或VALUES INTO語句的結果不止一行。 SQLSTATE = 21000

這裏的問題是沒有獨特的列讓我加入,以便每列都得到一個獨特的結果..或者所以在我看來。請幫忙? :(

回答

0

試試這個:我已經添加

UPDATE table2 
SET table2.PageID = 
    (SELECT t1.PageID 
    FROM table1 t1 
    WHERE t1.id = table2.SCRID) 
WHERE EXISTS(
    SELECT 'TABLE1PAGE' 
    FROM table1 t1 
    WHERE t1.id = table2.SCRID) 

EXISTS子句,以防止NULL分配給PAGEID表2

+0

這工作致謝:) – evkwan

+0

@evkwan:有一個愉快的一天;)! –