2016-03-27 8 views
0

Beginnen Sie einfach mit SQL, und ich versuche, eine einfache UPDATE-Anweisung zu tun. Aus irgendeinem Grund funktioniert es aber nicht. Der Code wird alsWirklich einfache UPDATE-Abfrage funktioniert nicht

UPDATE batting SET BA = (h/ab);

folgt Nachdem es läuft eine Division durch Null-Fehler zurückgibt.

Immer wenn ich eine einfache Select-Anweisung mit dieser Formel verwenden, funktioniert es gut. Was muss ich tun?

+0

Datentyp von h und ab ???? – Naruto

+0

Treffer und at-bat aus der Lahman Baseball-Datenbank. Es ist nicht meine eigene Datenbank. – saberfan7

Antwort

0

Sie erhalten diesen Fehler, weil der Wert von ab für einige Datensätze 0 ist. Um diese recods zu überspringen, können Sie CASE Anweisung mit Update verwenden, z.B .:

UPDATE batting 
SET BA = CASE 
      WHEN ab = 0 THEN BA 
      ELSE h/ab 
     END 
WHERE //condition 
+0

Perfekt, danke! – saberfan7

+0

Sie können meine Antwort als richtige Antwort akzeptieren, wenn es Ihnen geholfen hat :) –

+0

Dies kann auch geschrieben werden als 'Update Batting Set Ba = IF (ab = 0; ba; h/ab) wo ... '(siehe [hier] (http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html#function_if)). Und ja, @ Saberfan7, bitte geben Sie Darshan Credits. – PerlDuck

Verwandte Themen