Das Ergebnis deines Subselect muss natürlich genau 1 Zeile zurückgeben, da ja SQL sonst nicht weiß, welcher Wert denn nun da rein soll.
Du musst also deine Where-Klausel des Subselect so genau angeben, dass tatsächlich nur 1 Satz ausgewählt wird, da der Update ja nur für den einen aktuellen Satz gilt.