Hier ist meine Abfrage?Wie kann ich eine konstante Zahl als niedrigste Zahl in einer Spalte festlegen?
UPDATE users
SET reputation = reputation - (CASE WHEN id = 29 THEN 2
WHEN id = 30 AND NOT 0 THEN 15
ELSE 0
END)
WHERE id IN (30, 29);
Manchmal wirft es diesen Fehler:
#1690 - BIGINT UNSIGNED value is out of range in '(spy.users.reputation - (case when (spy.users.id = 29) then 2 when ((spy.users.id = 30) and (not(0))) then 15 else 0 end))'
Wie Sie in der Fehlermeldung angezeigt wird, reputation
Spalte ist UNSIGNED, und ich brauche es zu halten 1
mindestens .. etwas genau wie Stackoverflow : Wenn ein Benutzer 1 Wiederholungen hat und er einen Downvote erhält, bleibt seine Wiederholung 1
. Nun, wie kann ich diese Update-Abfrage beheben, um in einem solchen Fall einen Fehler zu vermeiden?
Was genau wollen Sie hier tun: 'WHEN id = 30 AND NOT 0 '? – sgeddes
@sgeddes 'WENN id = 29' ist OP und' WENN id = 30' ist Responder. Auch "AND NOT 0" prüft, ob der Responder nicht das OP ist. – stack
Ich denke ich bin mir nicht sicher, wie 'not 0' hier hilft. Auf welches Feld bezieht es sich? Angenommen, die ID, wenn es 30 ist, wie könnte es 0 sein? Vielleicht verstehe ich einfach nicht, es ist die Verwendung ... – sgeddes