2012-05-26 26 views
0

我有一個表格,其中列UserId,EmailMobileEmail沒有空值,但mobile的空值分散在表中的不同行中。更新記錄的空列的第一行條目

我想更新每個空的第一行mobile與唯一mobile。我希望這會工作,但不確定。

UPDATE  userprofileplus 
SET    mobile = 9199225533 
WHERE  (UserId IN 
          (SELECT  TOP (1) UserId 
           FROM   userprofileplus AS userprofileplus_1 
           WHERE  (mobile IS NULL) AND (UserId = 5))) 

我的目的是防止用戶在桌上產生不必要的空值。我觀察到的一個問題是SQL Server Compact Edition 不支持TOP關鍵字。我如何解決這個問題?

SQL Server CE版本是4.0。我還注意到,0123M關鍵字完全由WebMatrix支持,但VS 2010 SP1在SQL Server CE 4上拒絕TOP關鍵字支持。這裏發生了什麼?當在webmatrix中運行時,所有空移動記錄被更新忽略TOP標準。我只需要第一個返回的行被更新不是全部。我也試過這個。相同的結果

UPDATE  userprofileplus 
SET    mobile = 9199225533 
WHERE  (UserId IN 
          (SELECT  UserId 
           FROM   userprofileplus AS userprofileplus_1 
           WHERE  (mobile IS NULL) AND (UserId = 5) order by userid offset 1 rows)) 

有人,請把我救了出來。

+1

你可以告訴我們你當前行的例子和你想要的輸出嗎? –

+1

其中之一,你需要'..哪裏的mobilenum IS NULL .....' - 它不會與'isnull'一起工作.... –

+0

@marc_s,tnx ....我已經解決了上面的問題實際的代碼工作正常,除了TOP關鍵字,其中sql server CE標記爲不受支持的關鍵字。 –

回答

0

P !! .......我終於在幾次邏輯潛水後得到它。

UPDATE  userprofileplus 
SET    mobile = 9199225533 
WHERE  (mobile is null and userid = 5) and (Id IN 
          (SELECT  TOP (1) Id 
           FROM   userprofileplus AS userprofileplus_1 
           WHERE  (mobile IS NULL) AND (UserId = 5))) 

我不得不用我的主鍵列作爲支點,以確保單行從即使我使用的是TOP標準的子查詢返回。 但我仍然很好奇,爲什麼VS2010 sqlCE 4.0不支持TOP關鍵字,但webmatrix does.Also,什麼是所有列更新後甚至在其他查詢中使用TOP關鍵字的原因?