Php Sql更新字段仅当为空时,否则请检查下一行

Php Sql更新字段仅当为空时,否则请检查下一行,php,mysql,sql,Php,Mysql,Sql,以下代码仅在给定ID为null时更新字段 $sql="UPDATE TABLE7 set SCORE1= $high where SCORE1 IS NULL AND ID = 9"; 如何调整代码,使其仅在null时更新一行,如果不为null,则检查下一行的某个ID=9等。 比如: $sql="UPDATE TABLE7 set IF SCORE1 IS NULL THEN SCORE1= $high, ELSE //MEANING SCORE1 IS NOT NULL IF SCORE

以下代码仅在给定ID为null时更新字段

$sql="UPDATE TABLE7 set SCORE1= $high where SCORE1 IS NULL AND ID = 9";
如何调整代码,使其仅在null时更新一行,如果不为null,则检查下一行的某个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"
多谢各位

编辑

我想要的是,在更新第一个空字段之后,其他字段将不会被更新

即如果SCORE1=NULL,则SCORE1=$high,但无论是否为NULL,SCORE2和SCORE3都不应更新


我只想只更新第一个空字段。我该怎么做?谢谢。

干得不错。您的代码将更新所有字段,即设置SCORE1=$high、SCORE2=$high、SCORE3=$high。我想要的是,在更新第一个空字段之后,其他字段将不会被更新。即如果SCORE1=NULL,则SCORE1=$high,但无论是否为NULL,SCORE2和SCORE3都不应更新。我只想只更新第一个空字段。我该怎么做?谢谢。该程序还添加了其他条件。我更新了我的答案。我认为这很容易适应。
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)