2013-12-15 62 views
0

下面的代碼只更新一個字段爲空時,對於給定的ID。SQL的更新域只有當空ELSE檢查下一行

$sql="UPDATE TABLE7 set SCORE1= $high where SCORE1 IS NULL AND ID = 9"; 

如何調整代碼,以便它只有當空更新某​​一行,如果不爲空,檢查下一行一定ID = 9等 喜歡的東西:

$sql="UPDATE TABLE7 set 
IF SCORE1 IS NULL THEN SCORE1= $high, 
ELSE //MEANING SCORE1 IS NOT NULL 
IF SCORE2 IS NULL THEN SCORE2= $high, 
ELSE // MEANING SCORE2 IS NOT NULL 
IF SCORE3 IS NULL THEN SCORE3= $high 
ELSE //MEANING ALL FIELDS ARE NOT NULL 
THROW ERROR (ECHO ‘All FIELDS ARE FILLED’) 
WHERE ID = 9" 

謝謝您。

編輯

我要的是,更新的第一個NULL字段後,其他字段將不會被更新。

也就是說,如果SCORE1 = NULL,則SCORE1 = $高,但SCORE2和SCORE3不應該更新,無論是空或沒有。

我只想只更新第一個NULL字段。我怎樣才能做到這一點?謝謝。

回答

0
UPDATE TABLE7 
set SCORE1 = case when SCORE1 IS NULL THEN $high else SCORE1 end, 
    SCORE2 = case when SCORE2 IS NULL and SCORE1 is not null THEN $high else SCORE2 end, 
    SCORE3 = case when SCORE3 IS NULL and SCORE1 is not null and score2 is not null THEN $high else SCORE3 end 
WHERE ID = 9 
and (score1 is null or score2 is null or score3 is null) 
各地
+0

不錯的工作。您的代碼更新所有字段,即設置SCORE1 = $高,SCORE2 = $高,SCORE3 = $高。 我想要的是,更新第一個NULL字段後,其他字段將不會更新。 即如果SCORE1 = NULL,則SCORE1 = $高,但SCORE2和SCORE3不應該更新,無論是空或沒有。 我只想只更新第一個NULL字段。我怎樣才能做到這一點?謝謝。 – user3104096

+0

添加其他條件。我更新了我的答案。我認爲這很容易適應。 –

+0

工程很好。謝謝 – user3104096