2009-01-16 42 views
0

我有相同的列更新一個數據庫表不包括空值

tbl_source (ID, Title) 

tbl_dest (ID, Title) 

我想從tbl_source更新tbl_dest冠軍兩個表其中蒸餾水和源匹配的ID。但是,如果源標題爲空(或空白),我不想更新dest標題。

我有這樣的:

UPDATE tbl_dest 
SET    tbl_dest.Title = 
     (SELECT  title 
     FROM   tbl_source 
     WHERE  tbl_dest.id = tbl_source.ID and tbl_source.title is not null) 

但它一直插入空值。

我將如何構造這樣的查詢?

我正在使用SQL server 2005.

謝謝。

回答

5

使用內部連接...

Update tbl_dest 
Set tbl_dest.Title = tbl_source.Title 
From tbl_dest inner join tbl_source on tbl_dest.ID = tbl_source.ID 
Where tbl_source.Title is not null and tbl_source.Title <> '' 
+0

該訣竅。謝謝。 – 2009-01-16 20:32:25

0

它的值設置爲NULL,因爲子查詢返回null,而你不是在你的UPDATE子句篩選記錄。

嘗試這樣的事情,而不是:

UPDATE tbl_dest 
SET tbl_dest.Title = 
    (SELECT title 
    FROM tbl_source 
    WHERE tbl_source.id = tbl_dest.id) 
WHERE EXISTS 
    (SELECT 1 
    FROM tbl_source 
    WHERE tbl_source.id = tbl_dest.id 
    AND tbl_source.title IS NOT NULL) 
0

這是因爲外查詢每次更新記錄(沒有WHERE子句),所以當內部查詢未找到匹配的記錄,NULL被插入。

添加WHERE子句外查詢,以便對這些記錄不是做一個更新:

UPDATE tbl_dest 
SET    tbl_dest.Title = 
     (SELECT  title 
     FROM   tbl_source 
     WHERE  tbl_dest.id = tbl_source.ID and tbl_source.title is not null) 
WHERE EXISTS 
     (SELECT  title 
     FROM   tbl_source 
     WHERE  tbl_dest.id = tbl_source.ID and tbl_source.title is not null)