2 votes

MYSQL - Comment obtenir la valeur de la ligne précédente si la valeur actuelle est nulle ?

J'ai une table appelée enregistrement_valeur comme ci-dessous

id | record_id | value | serverTime
1  |     20    |   0   |  2016-04-19 04:51:16
2  |     20    |   0   |  2016-04-19 04:40:19
3  |     20    |   0   |  2016-04-19 04:27:34
4  |     20    |   70  |  2016-04-19 04:14:24
5  |     20    |   50  |  2016-04-19 04:02:21

..

select value from value_record
where record_id in(20) 
order by serverTime desc limit 1;

sortie :

0

mais le résultat attendu est :

70

cela signifie que si la valeur actuelle est zéro, la requête retourne à la ligne précédente où il n'y a pas de zéro et affiche la valeur non nulle.

Comment réaliser cela dans mysql ?

2voto

mitkosoft Points 3569

Vous devez filtrer les valeurs différentes de 0 et vous n'avez pas besoin de IN clause :

SELECT
    `value`
FROM
    value_record
WHERE
    record_id = 20
    AND `value` > 0
ORDER BY
    serverTime DESC
LIMIT 1;

1voto

Gaurav Lad Points 800
SELECT value 
FROM value_record 
WHERE record_id IN(20) 
AND value > 0 
ORDER BY serverTime LIMIT 1;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X