Je voudrais comprendre comment définir la valeur 0 de l'attribut quand il est NULL avec la fonction MAX. Par exemple:
Name columns:
number - date
Values:
10 - 2012-04-04
11 - 2012-04-04
12 - 2012-04-04
13 - 2012-04-15
14 - 2012-06-21
1 - 2013-07-04
Le nombre est un champ incrémentiel, mais il s'est fixé à 1 lorsque la nouvelle année est arrivée. Mais résultat de:
SELECT (MAX(number)+1) number WHERE date LIKE "2014%"
est NULL et non 1 car MAX (nombre) est NULL et non 0
Eh bien, comme il n'y a pas de date comme 2014, vous vous attendriez à null, car le maximum de rien n'est en fait rien.
Mais faites ceci:
COALESCE(MAX(number),0)
Ce qui signifie: récupérez le premier élément non nul de la liste suivante, donc si votre max
est nul, cela vous donnera 0
COALESCE fonctionne, mais IFNULL me semble plus clair.
IFNULL(MAX(number), 0)
Si la première expression n'est pas NULL, IFNULL () renvoie l'expression elle-même, sinon elle renvoie le deuxième paramètre. IFNULL () renvoie une valeur numérique ou chaîne, selon le contexte dans lequel elle est utilisée.