8
votes

MySQL min Ignore NULL - Besoin de Solution de contournement / Tweak

pour cette requête xxx

min_date ignore les valeurs null dans un groupe d'identité de commande.

Dans mon cas, je veux min_date = null si le groupe a une commande_Products tuple avec une valeur null à la date.

aucune idée de la procédure?


0 commentaires

4 Réponses :


0
votes

L'une des façons de le faire, si votre domaine problématique permet de définir une "date minimale absolue", est d'utiliser l'expression ISNULL () / COALACECE () pour transformer un champ nullable en non null.

isnull (datefield, '1000-01-01')

Un autre (F Pas significatif "plus petit" par défaut peut être défini) est de le faire via 2 requêtes - d'abord sélectionner des choses avec des nulls, puis si le jeu de résultats est vide, ajoutez des trucs lorsque la date n'est pas null


0 commentaires

15
votes

Une solution de contournement simple pourrait être la suivante: xxx

Donc, si, si 1970/01/01, vous savez qu'il y a une valeur null.


2 commentaires

Cette requête renvoie toutes les valeurs min_date comme '1970-01-01'. Êtes-vous sûr que celui-ci fonctionne, avez-vous essayé avant?


@Shikhar: Non, je n'ai pas essayé avant, mais je l'ai essayé maintenant et ça marche pour moi. Peut-être qu'il y a des nulls dans toutes les commandes?



1
votes
select case when count(date)=sum(1) then min(date) else null end
or, when all rows are not null, return min date, else return null.

0 commentaires

0
votes

Si la question consiste à trouver la date minimale à partir de plusieurs colonnes, les éléments suivants pourraient vous aider;

SELECT 
      LEAST
            (IFNULL(date_1, date(CURRENT_DATE()+1)),
            IFNULL(date_2, date(CURRENT_DATE()+1)),
            IFNULL(date_3, date(CURRENT_DATE()+1))) as MinimumDate
FROM YourTable;


0 commentaires