sql >> Databasteknik >  >> RDS >> Mysql

Hur hittar man minst icke-nullkolumn i en viss rad i SQL?

Tyvärr (för ditt fall) ändrades beteendet hos LEAST i MySQL 5.0.13 (http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_least ) - det brukade endast returnera NULL om alla argument är NULL.

Denna ändring rapporterades till och med som en bugg:http://bugs.mysql.com/ bug.php?id=15610 Men korrigeringen var bara till MySQL-dokumentation, som förklarar nytt beteende och kompatibilitetsavbrott.

Din lösning var en av de rekommenderade lösningarna. En annan kan använda IF-operatorn:

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


  1. HQL hur man går med tre bord

  2. ReadyCloud ReadyShipper X

  3. Tillåt icke-ascii-tecken i MySQL-databasen

  4. Vänligen sluta använda detta UPSERT-antimönster