Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie finde ich die kleinste Nicht-Null-Spalte in einer bestimmten Zeile in SQL?

Leider (für Ihren Fall) wurde das Verhalten von LEAST in MySQL 5.0.13 geändert (http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_least ) - Früher wurde NULL nur zurückgegeben, wenn alle Argumente NULL sind.

Diese Änderung wurde sogar als Fehler gemeldet:http://bugs.mysql.com/ bug.php?id=15610 Aber die Korrektur betraf nur die MySQL-Dokumentation und erklärte neues Verhalten und Kompatibilitätsbruch.

Ihre Lösung war eine der empfohlenen Problemumgehungen. Ein anderer kann den IF-Operator verwenden:

SELECT IF(Col1 IS NULL OR Col2 IS NULL, COALESCE(Col1, Col2), LEAST(Col1,Col2))